Roles.GetRolesForUser()结果被缓存

时间:2009-07-01 21:45:54

标签: asp.net active-directory roleprovider

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

修改

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