Spring-shiro-Boot-3 AuthenticationToken体系

本文介绍了Shiro身份验证的基本概念,包括身份和证明的定义。详细讲解了AuthenticationToken接口及其在实际使用中的扩展,如RememberMeAuthenticationToken、HostAuthenticationToken、UsernamePasswordToken和BearerToken的用途。同时,讨论了在Spring Boot中如何在常规登录和前后端分离场景下利用这些令牌进行身份验证。

登陆认证时,必须要先构造登陆令牌。

在是shiro中,用AuthenticationToken接口来表达登陆令牌。

这里介绍shiro的AuthenticationToken体系,在实际使用中,很多时候需要继承原有令牌实现私有化功能。

一、shiro身份验证的基本概念:

(1)身份验证:

这就不多说了,给shiro传递【身份+证明】,就可以进行验证。

(2)身份

粗浅的说,相当于账户。比如手机号、邮箱、用户名这些。

准确的说,相当于身份。

shiro中把这个封装成了【principals】

(3)证明

证明其实就是密码。

shiro中把这个封装成了【credentials】

二、接口


public interface AuthenticationToken extends Serializable {

    /**
     * 返回身份信息,相当于用户的用户名
     */
    Object getPrincipal();

    /**
     * 返回用户凭证信息,相当于用户的用户密码
     */
    Object getCredentials();

三、shiro token体系

RememberMeAuthenticationToken:添加了记住我的功能

HostAuthenticationToken:添加了获取用户主机的功能

UsernamePasswordToken:shiro认证中最常用的一种,里面封装了用户的用户名,密码,用户主机,是否记住我的功能

BearerToken:里面封装了一个字符串token,该字符串token为用户的一些不敏感信息经过加密之后生成的,可以通过一定的规则解密来获取用户的信息,主要在web应用中结合自定义Realm使用,用于前后端分离,将字符串token放到header中传给系统进行验证。

四、实际使用

(1)常规登录,登录后分配session,并设置session过期时间。

@LogAnnotation
	@ApiOperation(value = "web端登陆")
	@PostMapping("/sys/login")
	public void login(String username, String password) {
		UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password);
		SecurityUtils.getSubject().login(usernamePasswordToken);
		// 设置shiro的session过期时间
		SecurityUtils.getSubject().getSession().setTimeout(serverProperties.getServlet().getSession().getTimeout().toMillis());
	}

 (2)前后端分离登录,不用session,用token来控制这种无状态。

@LogAnnotation
	@ApiOperation(value = "Restful方式登陆,前后端分离时登录接口")
	@PostMapping("/sys/login/restful")
	public Token restfulLogin(String username, String password) {
		UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password);
		SecurityUtils.getSubject().login(usernamePasswordToken);

		return tokenManager.saveToken(usernamePasswordToken);
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良之才-小良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值