1、认证原理
Spring Security是如何完成身份认证的?
- 用户名和密码被过滤器获取到,封装成Authentication,通常情况下是UsernamePasswordAuthenticationToken这个实现类。
- AuthenticationManager身份管理器负责验证这个Authentication
- 认证成功后,AuthenticationManager身份管理器返回一个被填充满了信息的(包括上面提到的权限信息,身份信息,细节信息,但密码通常会被移除)Authentication实例
- SecurityContextHolder安全上下文容器将第3步填充了信息的Authentication,通过 SecurityContextHolder.getContext().setAuthentication(…) 方法中,设置到其中。
public class AuthenticationExample {
private static AuthenticationManager am = new SampleAuthenticationManager();
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
while (true) {
System.out.println("Please enter your username:");
String name = in.readLine();
System.out.println("Please enter your password:");
String password = in.readLine();
try {
// 封装认证信息,未认证通过
Authentication request = new
UsernamePasswordAuthenticationToken(name, password);
// 认证逻辑
Authentication result = am.authenticate(request); //当前线程绑定认证信息 SecurityContextHolder.getContext().setAuthentication(result); break;
} catch (AuthenticationException</

本文详细解读SpringSecurity的身份认证过程,包括认证原理、认证流程,以及关键接口如AuthenticationManager和AuthenticationProvider的作用。通过实例演示如何封装和验证用户凭证,并介绍了UserDetailsService和PasswordEncoder在实际项目中的运用。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



