sa-token/sa-token-doc/doc/use/login-auth.md
2021-01-31 23:28:42 +08:00

2.3 KiB
Raw Blame History

登录验证


核心思想

所谓登录验证,说白了就是限制某些接口只有登录后才能访问(如:查询我的账号资料)
那么判断一个会话是否登录的依据是什么?当然是登录成功后框架给你做个标记!然后在需要鉴权的接口里检查此标记,有标记者视为已登录,无标记者视为未登录!

登录与注销

根据以上思路我们很容易想到以下api

// 标记当前会话登录的账号id 
// 建议的参数类型long | int | String 不可以传入复杂类型User、Admin等等
StpUtil.setLoginId(Object loginId);	

// 当前会话注销登录
StpUtil.logout();

// 获取当前会话是否已经登录返回true=已登录false=未登录
StpUtil.isLogin();

// 检验当前会话是否已经登录, 如果未登录,则抛出异常:`NotLoginException`
StpUtil.checkLogin()

扩展:NotLoginException 对象可通过 getLoginKey() 方法获取具体是哪个 StpLogic 抛出的异常
扩展:NotLoginException 对象可通过 getType() 方法获取具体的场景值,详细参考章节:未登录场景值

会话查询

// 获取当前会话登录id, 如果未登录,则抛出异常:`NotLoginException`
StpUtil.getLoginId();

// 类似查询API还有
StpUtil.getLoginIdAsString();    // 获取当前会话登录id, 并转化为`String`类型
StpUtil.getLoginIdAsInt();       // 获取当前会话登录id, 并转化为`int`类型
StpUtil.getLoginIdAsLong();      // 获取当前会话登录id, 并转化为`long`类型

// ---------- 指定未登录情形下返回的默认值 ----------

// 获取当前会话登录id, 如果未登录则返回null 
StpUtil.getLoginIdDefaultNull();

// 获取当前会话登录id, 如果未登录,则返回默认值 `defaultValue`可以为任意类型)
StpUtil.getLoginId(T defaultValue);

其它API

// 获取指定token对应的登录id如果未登录则返回 null
StpUtil.getLoginIdByToken(String tokenValue);

// 获取当前`StpLogic`的token名称
StpUtil.getTokenName();

// 获取当前会话的token值
StpUtil.getTokenValue();

// 获取当前会话的token信息参数
StpUtil.getTokenInfo();

有关TokenInfo参数详解请参考参考TokenInfo参数详解