Wicket Security - 改变内存用户的角色

时间:2018-02-19 08:30:21

标签: spring-security wicket wicket-7

我在我正在开发的应用程序中使用Wicket 7.0,我想在开发过程中使用Inmemory用户一些建议。

我的想法是让一个Inmemory用户在我登录之前设置好角色。

我的第一个预期方法是在启动时使用" username"来实例化用户。和密码,但没有任何角色。然后我想通过勾选Login-form中组件中的Checkbox来添加/删除角色,最后使用预定义的user / pwd登录。

Inmemory用户的实例是否可以在应用程序运行时更改角色?或者我应该删除它并在每次我希望它具有不同角色时创建它的新实例?这甚至是最好和最简单的方法吗?

仅在开发过程中为方便起见。

提前致谢

1 个答案:

答案 0 :(得分:0)

注入UserDetailsManager并使用其updateUser()方法更新其角色:

@Service
public class SingleUserSwitchService {
    @Autowired
    private UserDetailsManager userDetailsManager;

    public void changeUserRoles(String ... roles) {
        Collection<GrantedAuthority> roles = ... // new roles
        User user = new User("login", "password", roles);
        userDetailsManager.updateUser(user);
    }
}

在这里,我假设您的用户登录是“登录”,并且您对密码进行了硬编码。

然后,您只需要使用所需角色列表调用您的服务。