2010-02-25 58 views
2

我遇到Acegi Plugin的问题。问题是Acegi缓存用户信息。如果我更新角色或密码,则更改不会立即显示。有一段时间我甚至可以注销并使用以前的密码登录。我发现了两个解决方案JIRAGrails Acegi插件 - 如何更新缓存?

  1. 集cacheUsers =在SecurityConfig.groovy假
  2. 使用特殊的过滤器更新的SecurityContext

这两种解决方案的工作。不幸的是,两者都产生数据库查询的负载

用户只在UserService.update(..)中更新,我可以预料他们很少会被更新。是否有机会立即更新securityContext。对当前用户来说没有问题。但是,即使是另一个登录用户,我可以做吗?例如如果管理员更改某个用户的角色/密码

回答

1

cacheUsers = false是最佳选项。它不会产生“加载”查询,每次登录只有一次。轻微的额外成本超过了缓存的烦人副作用。