package com.yhn.geekanime.config.sa_token;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpLogic;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* Sa-Token 权限认证工具类 (User版),多个平台
*
* @author yhnyhn123
*/
@Component
public class StpCustomerUtil {
private StpCustomerUtil() {
}
/**
* 账号类型标识
*/
public static final String TYPE = "customer";
/**
* 底层的 StpLogic 对象
*/
public static StpLogic stpLogic = new StpLogic(TYPE);
/**
* 获取当前 StpLogic 的账号类型
*
* @return See Note
*/
public static String getLoginType() {
return stpLogic.getLoginType();
}
/**
* 重置 StpLogic 对象
* <br> 1、更改此账户的 StpLogic 对象
* <br> 2、put 到全局 StpLogic 集合中
* <br> 3、发送日志
*
* @param newStpLogic /
*/
public static void setStpLogic(StpLogic newStpLogic) {
// 重置此账户的 StpLogic 对象
stpLogic = newStpLogic;
// 添加到全局 StpLogic 集合中
// 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic
SaManager.putStpLogic(newStpLogic);
// $$ 全局事件
SaTokenEventCenter.doSetStpLogic(stpLogic);
}
/**
* 获取 StpLogic 对象
*
* @return /
*/
public static StpLogic getStpLogic() {
return stpLogic;
}
// ------------------- 获取token 相关 -------------------
/**
* 返回token名称
*
* @return 此StpLogic的token名称
*/
public static String getTokenName() {
return stpLogic.getTokenName();
}
/**
* 在当前会话写入当前TokenValue
*
* @param tokenValue token值
*/
public static void setTokenValue(String tokenValue) {
stpLogic.setTokenValue(tokenValue);
}
/**
* 在当前会话写入当前TokenValue
*
* @param tokenValue token值
* @param cookieTimeout Cookie存活时间(秒)
*/
public static void setTokenValue(String tokenValue, int cookieTimeout) {
stpLogic.setTokenValue(tokenValue, cookieTimeout);
}
/**
* 获取当前TokenValue
*
* @return 当前tokenValue
*/
public static String getTokenValue() {
return stpLogic.getTokenValue();
}
/**
* 获取当前TokenValue (不裁剪前缀)
*
* @return /
*/
public static String getTokenValueNotCut() {
return stpLogic.getTokenValueNotCut();
}
/**
* 获取当前会话的Token信息
*
* @return token信息
*/
public static SaTokenInfo getTokenInfo() {
return stpLogic.getTokenInfo();
}
// ------------------- 登录相关操作 -------------------
// --- 登录
/**
* 会话登录
*
* @param id 账号id,建议的类型:(long | int | String)
*/
public static void login(Object id) {
stpLogic.login(id);
}
/**
* 会话登录,并指定登录设备类型
*
* @param id 账号id,建议的类型:(long | int | String)
* @param device 设备类型
*/
public static void login(Object id, String device) {
stpLogic.login(id, device);
}
/**
* 会话登录,并指定是否 [记住我]
*
* @param id 账号id,建议的类型:(long | int | String)
* @param isLastingCookie 是否为持久Cookie
*/
public static void login(Object id, boolean isLastingCookie) {
stpLogic.login(id, isLastingCookie);
}
/**
* 会话登录,并指定此次登录token的有效期, 单位:秒
*
* @param id 账号id,建议的类型:(long | int | String)
* @param timeout 此次登录token的有效期, 单位:秒 (如未指定,自动取全局配置的timeout值)
*/
public static void login(Object id, long timeout) {
stpLogic.login(id, timeout);
}
/**
* 会话登录,并指定所有登录参数Model
*
* @param id 登录id,建议的类型:(long | int | String)
* @param loginModel 此次登录的参数Model
*/
public static void login(Object id, SaLoginModel loginModel) {
stpLogic.login(id, loginModel);
}
/**
* 创建指定账号id的登录会话
*
* @param id 登录id,建议的类型:(long | int | String)
* @return 返回会话令牌
*/
public static String createLoginSession(Object id) {
return stpLogic.createLoginSession(id);
}
/**
* 创建指定账号id的登录会话
*
* @param id 登录id,建议的类型:(long | int | String)
* @param loginModel 此次登录的参数Model
* @return 返回会话令牌
*/
public static String createLoginSession(Object id, SaLoginModel loginModel) {
return stpLogic.createLoginSession(id, loginModel);
}
// --- 注销
/**
* 会话注销
*/
public static void logout() {
stpLogic.logout();
}
/**
* 会话注销,根据账号id
*
* @param loginId 账号id
*/
public static void logout(Object loginId) {
stpLogic.logout(loginId);
}
/**
* 会话注销,根据账号id 和 设备类型
*
* @param loginId 账号id
* @param device 设备类型 (填null代表注销所有设备类型)
*/
public static void logout(Object loginId, String device) {
stpLogic.logout(loginId, device);
}
/**
* 会话注销,根据指定 Token
*
* @param tokenValue 指定token
*/
public static void logoutByTokenValue(String tokenValue) {
stpLogic.logoutByTokenValue(tokenValue);
}
/**
* 踢人下线,根据账号id
* <p> 当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5 </p>
*
* @param loginId 账号id
*/
public static void kickout(Object loginId) {
stpLogic.kickout(loginId);
}
/**
* 踢人下线,根据账号id 和 设备类型
* <p> 当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5 </p>
*
* @param loginId 账号id
* @param device 设备类型 (填null代表踢出所有设备类型)
*/
public static void kickout(Object loginId, String device) {
stpLogic.kickout(loginId, device);
}
/**
* 踢人下线,根据指定 Token
* <p> 当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5 </p>
*
* @param tokenValue 指定token
*/
public static void kickoutByTokenValue(String tokenValue) {
stpLogic.kickoutByTokenValue(tokenValue);
}
/**
* 顶人下线,根据账号id 和 设备类型
* <p> 当对方再次访问系统时,会抛出NotLoginException异常,场景值=-4 </p>
*
* @param loginId 账号id
* @param device 设备类型 (填null代表顶替所有设备类型)
*/
public static void replaced(Object loginId, String device) {
stpLogic.replaced(loginId, device);
}
// 查询相关
/**
* 当前会话是否已经登录
*
* @return 是否已登录
*/
public static boolean isLogin() {
return stpLogic.isLogin();
}
/**
* 检验当前会话是否已经登录,如未登录,则抛出异常
*/
public static void checkLogin() {
stpLogic.checkLogin();
}
/**
* 获取当前会话账号id, 如果未登录,则抛出异常
*
* @return 账号id
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本项目是基于Java的geekanime-backend极客动漫设计源码,包含256个文件,其中包括225个Java文件、23个XML文件、3个YAML文件、1个Gitignore文件、1个Dockerfile文件、1个Markdown文件、1个JSON文件和1个XLSX文件。这个项目是一个极客动漫的后端设计,旨在通过Java技术栈实现,为用户提供一个丰富的动漫内容平台。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的geekanime-backend极客动漫设计源码 (256个子文件)
Dockerfile 349B
.gitignore 2KB
StpCustomerUtil.java 33KB
UserServiceImpl.java 8KB
MinioUtil.java 5KB
ExcelUtils.java 3KB
PageUtils.java 2KB
LogInterceptor.java 2KB
GlobalExceptionHandler.java 2KB
ThreadPoolExecutorConfig.java 2KB
Article.java 2KB
UserService.java 2KB
RedisLimiterManager.java 2KB
NetUtils.java 2KB
Column.java 2KB
User.java 1KB
UserFoot.java 1KB
SpringContextUtils.java 1KB
UserVO.java 1KB
Comment.java 1KB
StpInterfaceImpl.java 1KB
WxOpenConfig.java 1KB
CommentQueryRequest.java 1KB
UserRoleEnum.java 1KB
PermissionQueryRequest.java 1KB
Notify.java 1KB
CommentUpdateRequest.java 1KB
CommentAddRequest.java 1KB
CommentVO.java 1KB
PermissionUpdateRequest.java 1KB
PermissionAddRequest.java 1KB
Permission.java 1KB
FileConstant.java 1KB
DictCommon.java 1KB
Reply.java 1KB
RoleQueryRequest.java 1KB
ArticleDetails.java 1KB
RoleUpdateRequest.java 1KB
RoleAddRequest.java 1KB
UserFollow.java 1KB
RoleVO.java 1KB
Role.java 1KB
ReadCount.java 1KB
UserRecordQueryRequest.java 1KB
ColumnArticle.java 1015B
DateUtils.java 1014B
ErrorCode.java 1014B
LoginUserVO.java 1012B
CommentLikeQueryRequest.java 1010B
UserRoleQueryRequest.java 1010B
CommentReport.java 1003B
Category.java 992B
RequestCount.java 989B
ArticleTag.java 985B
JsonConfig.java 980B
RolePermissionUpdateRequest.java 970B
RolePermissionAddRequest.java 967B
UserRecordUpdateRequest.java 962B
UserRecordAddRequest.java 959B
ThrowUtils.java 952B
RolePermission.java 949B
CommentLikeUpdateRequest.java 946B
UserRoleUpdateRequest.java 946B
CommentLikeAddRequest.java 943B
UserRoleAddRequest.java 943B
RolePermissionQueryRequest.java 942B
RolePermissionVO.java 942B
ResultUtils.java 929B
RedissonConfig.java 929B
UserRole.java 925B
CommentLike.java 925B
UserRoleVO.java 924B
CommentLikeVO.java 921B
MyBatisPlusConfig.java 920B
TagQueryRequest.java 909B
CategoryVO.java 895B
Tag.java 885B
CorsConfig.java 864B
TagUpdateRequest.java 855B
TagAddRequest.java 852B
TagVO.java 839B
UserQueryRequest.java 796B
GeekAnimeApplication.java 746B
BusinessException.java 682B
BaseResponse.java 638B
ArticleDetailsServiceImpl.java 623B
RolePermissionServiceImpl.java 599B
ArticleDetailsServiceImpl.java 599B
ColumnArticleServiceImpl.java 591B
ArticleTagServiceImpl.java 591B
CommentReportServiceImpl.java 585B
DictCommonServiceImpl.java 581B
RequestCountServiceImpl.java 579B
UserUpdateRequest.java 570B
CommentLikeServiceImpl.java 569B
RolePermissionServiceImpl.java 569B
UserFollowServiceImpl.java 567B
ArticleTagServiceImpl.java 567B
ColumnArticleServiceImpl.java 562B
PermissionServiceImpl.java 560B
共 256 条
- 1
- 2
- 3
资源评论
沐知全栈开发
- 粉丝: 5810
- 资源: 5218
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功