gpt4 book ai didi

c# - ASP.NET Windows 角色提供程序 (AspNetWindowsTokenRoleProvider) 没有注意到用户被添加到新组

转载 作者:太空狗 更新时间:2023-10-29 23:19:27 24 4
gpt4 key购买 nike

我正在尝试创建一个应用程序,该应用程序使用 规则来限制有权访问该应用程序的组。我正在使用 Windows 身份验证和 ASP.NET (AspNetWindowsTokenRoleProvider) 的 Windows 角色提供程序。我正在使用本地组来定义角色,因为我正在开发的域和应用程序最终将部署到的域是不同的。

当我最初设置将我的应用程序部署到 IIS7 服务器时,我将站点设置为使用基本身份验证,并使用适当的默认域,对于已分配给授权组的用户来说一切正常。但是,当我尝试将新用户添加到任何授权组时,该用户从未被授权访问该应用程序。除了重新启动机器,我已经完成了所有工作。我重新启动了 IIS,并删除了客户端的所有临时文件和 cookie,但无济于事。

应该指出,这是一个 ASP.Net MVC 应用程序,尽管我认为这不会真正产生任何影响。以下是我的 web.config 中的相关条目:

<!-- use windows authentication -->
<authentication mode="Windows" />

<!-- use the Windows role provider -->
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />

<!-- global authorization rules -->
<authorization>
<allow roles="admins,contractors"/>
<deny users="*" />
</authorization>

例如,假设我们有一个用户“Domain\joe”,当前不是本地“admins”组的成员,但我们想添加他。我们去添加他,然后当乔尝试登录时,他看到一个错误,表明他没有被授权(在几次登录尝试失败后)。重新启动 IIS 或让 Joe 删除他的 cookie 和其他临时文件都无法解决此问题。

ASP.Net 是否保留某种 secret 角色/组缓存?您如何着手将新用户添加到组中,然后确保角色提供者将看到该用户已添加到组中?

最佳答案

从组中添加或删除用户的时间与 IIS 接收更改的时间之间似乎存在延迟。您可以设置一个注册表值来更改缓存用户身份验证 token 的时间,或者一起禁用缓存。但是,更改此值 (UserTokenTTL) 似乎对 IIS 意识到用户已添加到组所花费的时间没有影响。以下页面包含有关 UserTokenTTL 注册表项的更多信息:http://support.microsoft.com/kb/954864

关于c# - ASP.NET Windows 角色提供程序 (AspNetWindowsTokenRoleProvider) 没有注意到用户被添加到新组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1455487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com