2009-07-01 31 views
1

当我运行Roles.GetRolesForUser(“用户名”)的角色被正确返回,但是如果我添加用户到AD的作用,结果显示不出来,直到我的日志用户从他们的系统中,并让他们重新登录。Roles.GetRolesForUser()结果会被缓存

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

回答

3

如果您使用的是内置角色提供商,有在web.config更改此设置:cacheRolesInCookie。我相信这是默认的。

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

如果你想看到内置的角色提供的内部运作,下载反射器。这是一个很棒的工具。

编辑

对不起,我重读,发现你正在使用AD。所以,你应该在web.config中对提供者设置进行更改。