代码之家  ›  专栏  ›  技术社区  ›  WedTM

将缓存Roles.GetRolesForUser()结果

  •  1
  • WedTM  · 技术社区  · 17 年前

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

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

    1 回复  |  直到 17 年前
        1
  •  3
  •   ScottE    17 年前

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

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

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

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

    推荐文章