package com.ruoyi.framework.wxopenidConfig; 
 | 
  
 | 
import org.springframework.security.authentication.AbstractAuthenticationToken; 
 | 
import org.springframework.security.core.GrantedAuthority; 
 | 
import org.springframework.security.core.SpringSecurityCoreVersion; 
 | 
  
 | 
import java.util.Collection; 
 | 
  
 | 
/** 
 | 
 * 微信OpenID登录 AuthenticationToken,模仿 UsernamePasswordAuthenticationToken 实现 
 | 
 */ 
 | 
public class WxOpenIDAuthenticationToken extends AbstractAuthenticationToken { 
 | 
  
 | 
    private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID; 
 | 
  
 | 
    /** 
 | 
     * 在 UsernamePasswordAuthenticationToken 中该字段代表登录的用户名, 
 | 
     * 在这里就代表登录的微信OpenID 
 | 
     */ 
 | 
    private final Object principal; 
 | 
  
 | 
    /** 
 | 
     * 构建一个没有鉴权的 WxOpenIDAuthenticationToken 
 | 
     */ 
 | 
    public WxOpenIDAuthenticationToken(Object principal) { 
 | 
        super(null); 
 | 
        this.principal = principal; 
 | 
        setAuthenticated(false); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 构建拥有鉴权的 WxOpenIDAuthenticationToken 
 | 
     */ 
 | 
    public WxOpenIDAuthenticationToken(Object principal, Collection<? extends GrantedAuthority> authorities) { 
 | 
        super(authorities); 
 | 
        this.principal = principal; 
 | 
        // must use super, as we override 
 | 
        super.setAuthenticated(true); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Object getCredentials() { 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Object getPrincipal() { 
 | 
        return this.principal; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException { 
 | 
        if (isAuthenticated) { 
 | 
            throw new IllegalArgumentException( 
 | 
                    "Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead"); 
 | 
        } 
 | 
  
 | 
        super.setAuthenticated(false); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void eraseCredentials() { 
 | 
        super.eraseCredentials(); 
 | 
    } 
 | 
} 
 |