我正在使用LogIn,LogOut,Register等基本帐户功能构建WebAPI AccountController。
我的控制器顶部装饰有[System.Web.Http.Authorize]
属性。
在以下方法中,经过身份验证的用户是我的本地系统用户,除非我使用" AllowAnonymous"
来装饰该方法 // GET/api/isAuthenticated
// [System.Web.Http.AllowAnonymous]
[System.Web.Http.HttpGet]
public HttpResponseMessage IsAuthenticated()
{
if (User.Identity.IsAuthenticated)
{
var userProfile = _service.GetUserProfile(WebSecurity.CurrentUserId);
return Request.CreateResponse(HttpStatusCode.OK, userProfile);
}
else
{
return Request.CreateResponse(HttpStatusCode.OK, false);
}
}
据我所知,AllowAnonymous告诉控制器不要将Authorize属性应用于给定方法。由于我正在构建Web应用程序,因此我从不想对本地凭据进行授权。
我从MVC SPA模板中提取了此代码,因此我想知道 - 如果不使用[AllowAnonymous],如何将其更改为针对本地存储的用户凭据而非系统用户进行授权?
答案 0 :(得分:1)
使用WebAPI时,您应该通过HTTP基本授权对用户进行身份验证,这是一种授权的HTTP标准。如果您通过aspx页面进行日志记录,则应将配置部分中的授权设置为表单身份验证,如果不是,则应在webapi调用中添加http授权标头。
WebAPI控制器与普通控制器不同,其身份验证机制也是如此。