Здравствуйте, dotidot, Вы писали:
D>Как динамически обновлять права пользователя в spring security?
Права пользователя кэшируются в объекте Authentication. Можно создать обертку над этим объектом, переопределив соответствующим образом метод getAuthorities. Например, установив такой фильтр после всех аутентификационных фильтров:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
SecurityContext context = SecurityContextHolder.getContext();
Authentication auth = context.getAuthentication();
if (auth != null && auth.isAuthenticated() && !(auth instanceof MyAuthenticationWrapper)) {
// Новый пользователь - создать обертку
context.setAuthentication(new MyAuthenticationWrapper(auth));
} else if (auth instanceof MyAuthenticationWrapper) {
// Обновить права
((MyAuthenticationWrapper) auth).updateAuthorities();
}
chain.doFilter(request, response);
}