1

当我运行 Roles.GetRolesForUser("username") 时,角色会正确返回,但是如果我将用户添加到 AD 中的角色中,则结果不会显示,直到我将用户从他们的系统中注销并让他们重新登录在。

有没有办法让系统每次都重新检查?

4

1 回答 1

3

如果您使用的是内置角色提供程序,则 web.config 中有一个设置可以更改此设置:cacheRolesInCookie。我相信默认情况下这是真的。

这当然需要在每次角色查找发生时进行数据库查找(如果您当然使用数据库),所以这可能不是一个好主意。否则,我认为您将不得不编写自己的提供程序,这很容易。只需创建一个继承自 RoleProvider 的新类,并提供您自己的实现。您可以在实现中处理(或不处理)缓存。

如果您想查看内置角色提供程序的内部工作原理,请下载 Reflector。这是一个很棒的工具。

编辑

抱歉,我重新阅读并注意到您正在使用 AD。因此,您只需对 web.config 中的提供程序设置进行更改就可以了。

于 2009-07-01T21:56:37.493 回答