在spring cloud 的oauth2认证中,有一个用户认证服务auth,提供客户端的认证,由于oauth2有多种授权方式,不同的授权采用的方式就不一样了。
在实际业务中,比如有个应用A,有自己的数据库A,需要auth授权后才能登陆,PC端登录的时候采用的是授权码模式,使用 @EnableOAuth2Sso 注解标记一个 WebSecurityConfigurerAdapter 类。当登录认证成功后会广播一个event事件,这个事件可以监听到,所以我们采用的是监听InteractiveAuthenticationSuccessEvent事件,这个是通过自动交互的手段来登录成功,比如cookie自动登录。具体实现细节如下,实际应用采用的是注释掉的代码,两种都可以参考:
@EventListener
public void authSuccessListener(InteractiveAuthenticationSuccessEvent event){
System.out.println("哎呦喂,登录成功了");
Authentication authentication=SecurityContextHolder.getContext().getAuthentication();
//通用替换,针对用户名密码登录的
if(authentication instanceof UsernamePasswordAuthenticationToken){
UsernamePasswordAuthenticationToken originToken= (UsernamePasswordAuthenticationToken) authentication