【问题标题】:User.IsInRole returning false with local groupsUser.IsInRole 与本地组返回 false
【发布时间】:2014-05-08 16:53:45
【问题描述】:

我有一个 ASP MVC 应用程序,我想在其中使用 Windows 身份验证。在我的开发机器上,我创建了一个本地组,我在其中添加了我的帐户。当我使用 Visual Studio 运行应用程序时,我可以看到在我的控制器方法中的 User 对象中包含我的帐户。但是 User.IsInRole(local group name) 返回 false。 我的 web.config 看起来像这样

<authentication mode="Windows"/>
<identity impersonate="true" />
<authorization>
  <deny users="?"/>
</authorization>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>

我怎样才能让它在我的机器上工作?

我不想在方法上使用 Authorize 属性,因为我希望组名是可配置的,所以我必须通过代码来完成。我也无法让它工作。

【问题讨论】:

  • 不使用授权是一个非常糟糕的主意。相反,为什么不从 Authorize 派生并在属性中构建自定义逻辑?
  • 您在 Active Directory 域中吗?你的User.IsInRole() 代码是什么样的?
  • 你有使用假冒的理由吗?在极少数情况下,使用模拟是个好主意,您甚至可能不需要它。
  • 模拟不是必需的,我添加它是因为它可能会解决我的问题,但显然它没有。在方法上添加授权属性也没有什么区别。我不想添加指定角色的授权属性,因为我想通过 web.config 保持组可配置。
  • 我没有说在方法上添加authorize属性,我说从authorizeattribute中派生出你自己的,那么你就是; A 使用内置的安全模型,它已经过测试,B 它可以做任何你想做的事情,因为你编写代码,C 它变得可重用,所以你有一致的(DRY)代码。

标签: asp.net-mvc authorization windows-authentication


【解决方案1】:

发现我的问题。我必须注销并重新登录,才能在应用程序中对某个帐户的组进行更改。

【讨论】:

  • 我遇到了同样的问题,但另外必须确保我在登录期间物理连接到公司网络。由于 WiFi 连接直到登录后才激活,我在转圈,想知道为什么我的帐户没有获得新的组成员资格!
猜你喜欢
  • 2015-08-02
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 2018-07-14
  • 2016-07-29
  • 2018-12-11
相关资源
最近更新 更多