【问题标题】:Add [Authorize] attribute to web api method and now getting Authorization has been denied将 [Authorize] 属性添加到 web api 方法,现在获取授权已被拒绝
【发布时间】:2019-10-15 22:21:49
【问题描述】:

我需要将 Windows 身份验证添加到我的 Web API 2 应用程序,它不是核心,它是 4.6.1

{"Message":"此请求的授权已被拒绝。"}

我的控制器:

[Authorize]
[EnableCors(origins: "*", headers: "*", methods: "*")]
[RoutePrefix("api/SAI")]

web.config

<system.web>
    <authentication mode="Windows"/>
    .....
</system.web>

我认为 Postman 或 SoapUI 可以传递 headers 或 user/password ,但似乎没有任何效果。

最终我的最终目标是 React.JS 使用 Axios 的应用程序(我可以切换到 fetch )我想通过知道什么来进行身份验证??

【问题讨论】:

    标签: reactjs asp.net-web-api authorization axios windows-authentication


    【解决方案1】:

    您需要做的是向要保护的方法添加一个 [Authorize] 属性,可选择使用接受调用用户必须在其中的一个或多个角色名称的重载。

    那么您必须实现的是一种确保调用者的身份验证数据转换为 Principal 对象的方法。设置 Principal 通常不是你自己做的事情,而是让框架为你做。

    如果您确实想提供自己的接口,可以使用实现 System.Web.Http.Filters.IAuthenticationFilter 接口的身份验证过滤器。

    添加此属性时基本上需要实现。

    您可以在特定 API 方法以及控制器级别使用 [Authorize] 属性。如果您将 [Authorize] 属性放在控制器级别,那么您可以将 [AllowAnonymous] 属性用于您想要在没有身份验证的情况下访问的那些 API 方法。

    【讨论】:

    • 对于 Windows 身份验证,如何使用 Authorize 属性?是否应该出现一个框让我输入用户/密码?应该是 SSO .. 全部保持沉默吗?它怎么知道我的 id 是允许的?我应该在标头中传递来自 React 的令牌吗?什么是标准?
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2017-11-21
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多