手动身份验证 Spring Security

Dat*_*yen 0 java authentication spring-security

我在 Spring Security 中有一个手动身份验证的代码,如下所示:

Authentication authentication = new UsernamePasswordAuthenticationToken(username, password);

SecurityContextHolder.getContext().setAuthentication(authenticationManager.authenticate(authentication));
Run Code Online (Sandbox Code Playgroud)

在这些代码中,字段usernamepassword是我系统中的真实帐户。

但将真实信息放入代码中是敏感的。

我的意思是,我们创建一个假帐户并授予他们权限,例如USERADMIN

我的问题是:

无论如何,是否可以在不使用真实帐户的情况下进行手动身份验证。

xia*_*.li 6

是的,只需使用任何用户名和密码创建一个Username... Authentication,只要它们不是真实的,再加上所需的权限即可。

然后将其放入SecurityContext.

List<GrantedAuthority> authorities = Arrays.asList(new SimpleGrantedAuthority("ROLE_ADMIN"));
Authentication authentication = new UsernamePasswordAuthenticationToken("admin_user", "", authorities);
 SecurityContextHolder.getContext().setAuthentication(authentication);
Run Code Online (Sandbox Code Playgroud)