【问题标题】:mvc3 windows authentication returning 401.0 Unauthorizedmvc3 windows 身份验证返回 401.0 Unauthorized
【发布时间】:2012-01-28 07:46:42
【问题描述】:

我正在构建一个本地 Intranet Web 应用程序,它使用当前用户的 AD 凭据来访问系统。我的 Web 服务器在 Server 2008 上运行 IIS 7.5。

我的 AD 配置有两个组,用户和管理员,我都想访问我的 Web 应用程序,并且我已将这两个组(读取/执行权限)添加到我在 IIS 中的目录中。我的 web.config 非常标准,我的 Global.asax 文件中没有任何额外的过滤器。

如果我使用我的用户或管理员帐户,我可以访问我的应用程序,但我的同事不能,这使事情变得更加复杂。我的帐户对该文件夹没有任何权限 - 只有他们所属的组。

身份验证模式设置为 Windows,但不幸的是,我的同事访问该网站的每次尝试都失败,并显示以下内容:

HTTP Error 401.0 - Unauthorized
You do not have permission to view this directory or page.

“最可能的原因”框建议:

The authenticated user does not have access to a resource needed to process the request.

我就是想不通。如果我创建一个示例 mvc3 应用程序并将其部署在同一目录中,我可以像任何用户一样进行身份验证和查看页面。

【问题讨论】:

    标签: asp.net-mvc ntlm


    【解决方案1】:

    这可能有很多原因。

    1. 您的控制器需要使用适当的授权属性进行装饰,如下所示

      [授权(角色=“管理员”)]

    2. 在您的 web.config 中,您需要在 system.web 配置中包含以下代码

      <roleManager enabled="true" defaultProvider="YourRoleProvider">

    3. 最后,您需要查看该用户是否已添加到各自的角色中

    【讨论】:

    • 将此归结为假期后的三福。我将控制器功能锁定得太紧了。一旦将组添加到 global.asax 中的 AuthorizeAttribute 并从控制器中删除 Authorize,一切都很好!
    【解决方案2】:

    我也有同样的问题。经过几个小时的研究,处理这个问题似乎很容易。

    <system.webServer>
        <modules>
          <!--<remove name="FormsAuthentication" />-->
        </modules>
    </system.webServer>
    

    我想从 Web.config 文件中的 modules 属性中删除 &lt;remove name="FormsAuthentication" /&gt; 语句,该属性是在创建默认 MVC 网站时默认添加的。

    【讨论】:

      【解决方案3】:

      我在 MVC 4 中遇到了同样的问题,我已经解决了这个问题:

      [AllowAnonymous]
      

      (在控制器中添加此行,出现此错误时您正在调用的上述操作。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-16
        • 2021-06-14
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        相关资源
        最近更新 更多