Я новичок в веб-API, поэтому у меня есть контроллер веб-API, который должен возвращать пользовательский объект в json, чтобы я мог использовать эти данные json в своем клиенте форм xamarin. У меня есть метод проверки, который считывает или получает данные из базы данных, затем я вызываю этот метод проверки для метода BasicAuthenticationAttribute OnAuthorization, который использует Generic Identity и Generic Principal, и я не совсем понимаю, как они работают. Мне нужно передать мой пользовательский объект, который возвращается в методе проверки, из-за которого я озадачен. Мне нужна помощь, вот что я сделал:
//This method is used to check the user credentials
public static bool Login(string username, string password)
{
string hashedPassword = Util.HashPassword(password);
IEmployee obj = new EmployeeBL();
var userData = obj.GetByUserName(username);
return (!string.IsNullOrEmpty(userData.UserName) &&
string.CompareOrdinal(userData.Pass, hashedPassword) == 0);
}
Код ниже находится в моем методе OnAuthorization класса BasicAuthenticationAttribute, из которого я не хочу использовать GenericIdentity, поскольку он принимает только имя, которое я хочу передать своему пользовательскому объекту, который я не могу понять, так как я новичок:
if (UserValidate.Login(username, password))
{
var identity = new GenericIdentity(username);
IPrincipal principal = new GenericPrincipal(identity, null);
Thread.CurrentPrincipal = principal;
if (HttpContext.Current != null)
{
HttpContext.Current.User = principal;
}
}
else
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
}
Тогда вот мой API-контроллер, который мне нужен для возврата объекта json:
[BasicAuthentication]
public HttpResponseMessage GetEmployee()
{
//string username = Thread.CurrentPrincipal.Identity.Name;
var response = Request.CreateResponse<string>
(System.Net.HttpStatusCode.Created, "Success!");
return response;
}