3

我正在构建一个具有基本帐户功能的 WebAPI AccountController,如 LogIn、LogOut、Register 等。

我的控制器顶部装饰有该[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] 时,如何将其更改为针对本地存储的用户凭据而不是系统用户进行授权?

4

1 回答 1

1

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

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

于 2013-04-05T19:01:28.600 回答