Web API [授权]属性。这里发生了什么?

时间:2013-04-05 18:14:30

标签: c# .net asp.net-mvc asp.net-mvc-4

我正在使用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],如何将其更改为针对本地存储的用户凭据而非系统用户进行授权?

1 个答案:

答案 0 :(得分:1)

使用WebAPI时,您应该通过HTTP基本授权对用户进行身份验证,这是一种授权的HTTP标准。如果您通过aspx页面进行日志记录,则应将配置部分中的授权设置为表单身份验证,如果不是,则应在webapi调用中添加http授权标头。

WebAPI控制器与普通控制器不同,其身份验证机制也是如此。