我不确定我是否在正确的轨道上,所以我希望有人可以指出我正确的方向。我正在用C#编写一个WEB API,我希望不同的客户能够使用它。第一个是AngularJS客户端。
我正在尝试创建一个登录部分。根据我的理解,它应该工作的方式是客户端使用用户名和密码调用登录功能。然后,在成功验证后,WEB API应该传回令牌。每次发出请求时,此令牌都会传回客户端。
我的控制器上有以下登录方法:
public HttpResponseMessage Login([FromBody]CredentialContainer credentials)
{
var response = new HttpResponseMessage();
if (Authenticate(credentials.UserName, credentials.password))
{
//Generate the token and set it on the response (but how?)
response.StatusCode = HttpStatusCode.OK;
}
else
{
response.StatusCode = HttpStatusCode.Unauthorized;
}
return response;
}
如何生成令牌然后将其设置在响应上,以便将其传送回客户端?我看过一些使用OAuth的示例,但我不想使用它,因为看起来您需要将凭据存储在某些OAuth数据库中。我想将凭证存储在应用程序的数据库中。
如果我最终了解如何设置令牌,我还提出了以下属性。
class MesssageAuthorizationAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext actionContext)
{
//Validate Token here if I can get it from the actionContext?
}
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
//not sure what to do here. Would not like the user to get a IIS credentials prompt.
}
}
我在这里有正确的方法,还是我认为这一切都错了?