Spring Shiro基础组件 AuthenticationToken

相关阅读

简介

是账户的主体数据和登录时提交的支持凭证数据的合并;

核心方法

/**
 * 获取账户主体
 */
Object getPrincipal();

/**
 * 获取登录凭证
 */
Object getCredentials();

实现子类

public interface AuthenticationToken extends Serializable
    public interface RememberMeAuthenticationToken extends AuthenticationToken
        public class UsernamePasswordToken implements HostAuthenticationToken, RememberMeAuthenticationToken
    public interface HostAuthenticationToken extends AuthenticationToken
        public class UsernamePasswordToken implements HostAuthenticationToken, RememberMeAuthenticationToken
        public class BearerToken implements HostAuthenticationToken

RememberMeAuthenticationToken

简介

支持指示用户是否希望跨会话记住他们的身份的AuthenticationToken

核心方法

/**
 * 提交用户是否希望他们的身份被跨会话记住
 */
boolean isRememberMe();

HostAuthenticationToken

简介

支持保留发起身份验证尝试的主机信息的AuthenticationToken

核心方法

/**
 * 获取客户端hostname/ip
 */
String getHost();

UsernamePasswordToken

简介

简单的用户名/密码身份验证令牌,支持RememberMe服务和获取发生身份验证尝试的主机名;
使用char[]存储密码,因为String不可变,且内部值不可被覆盖,既可以在内存中被访问;
为避免在登录后访问密码信息,应始终在使用令牌执行登录尝试后调用clear()方法清除信息;

核心方法

// 用户名
private String username;
// 密码
private char[] password;
// 默认不开启RememberMe服务
private boolean rememberMe = false;
// 主机名
private String host;

/**
 * 构造方法
 */
public UsernamePasswordToken(final String username, final String password) {
    this(username, password != null ? password.toCharArray() : null, false, null);
}

/**
 * 获取账户主体
 */
public Object getPrincipal() {
    return getUsername();
}

/**
 * 获取登录凭证
 */
public Object getCredentials() {
    return getPassword();
}

/**
 * 获取host
 */
public String getHost() {
    return host;
}

/**
 * 提交用户是否希望他们的身份被跨会话记住
 */
public boolean isRememberMe() {
    return rememberMe;
}

/**
 * 清除数据
 */
public void clear() {
    this.username = null;
    this.host = null;
    this.rememberMe = false;

    if (this.password != null) {
        for (int i = 0; i < password.length; i++) {
            this.password[i] = 0x00;
        }
        this.password = null;
    }
}

BearerToken

简介

包含持有令牌或者API密钥的AuthenticationToken
持有令牌或者API密码通常通过Http请求头Authorization传递;

核心方法

// 持有令牌
private final String token;
// 主机名
private String host;

/**
 * 构造方法
 */
public BearerToken(String token, String host) {
    this.token = token;
    this.host = host;
}

/**
 * 获取客户端hostname/ip
 */
@Override
public String getHost() {
    return host;
}

/**
 * 获取账户主体
 */
@Override
public Object getPrincipal() {
    return token;
}

/**
 * 获取登录凭证
 */
@Override
public Object getCredentials() {
    return token;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值