参考文献
Sa-Token实现分布式登录鉴权(Redis集成 前后端分离)-腾讯云开发者社区-腾讯云
介绍
StpInterface
是 Sa-Token 框架中的一个接口,属于 Sa-Token 身份认证与授权框架的一部分。该接口提供了一些方法来实现自定义的身份认证和授权管理功能,特别是针对自定义的权限验证。
StpInterface类的主要功能
StpInterface
用于定义 Sa-Token 中与用户身份相关的核心操作接口。通过实现这个接口,用户可以自定义如何获取用户信息、验证用户身份、判断是否有权限等。
主要方法
StpInterface
主要包括以下几个常用的方法:
-
getLoginId()
:获取当前登录用户的唯一标识(例如用户 ID)。String getLoginId();
-
isLogin()
:判断当前是否已登录。boolean isLogin();
-
login(Object loginId)
:登录方法,传入一个唯一标识来进行用户登录。void login(Object loginId);
-
logout()
:登出方法,清除用户的登录状态。void logout();
-
hasPermission(String permission)
:判断当前登录用户是否具有某个权限。boolean hasPermission(String permission);
-
hasRole(String role)
:判断当前登录用户是否拥有某个角色。boolean hasRole(String role);
使用场景
- 自定义身份认证:如果需要自定义登录逻辑或用户身份验证,可以实现
StpInterface
接口来替代 Sa-Token 默认的用户认证方式。 - 角色与权限管理:通过
hasRole
和hasPermission
等方法,进行角色与权限的验证,保证应用中的授权机制符合业务需求。
示例
以下是一个简单的实现例子,展示了如何实现 StpInterface
接口来定制认证与授权逻辑:
import cn.dev33.satoken.stp.StpInterface;
import org.springframework.stereotype.Component;
@Component
public class MyStpInterface implements StpInterface {
@Override
public String getLoginId() {
// 返回当前登录用户的ID
return "123"; // 假设返回用户ID为123
}
@Override
public boolean isLogin() {
// 判断当前用户是否登录
return true; // 假设用户已登录
}
@Override
public void login(Object loginId) {
// 实现用户登录逻辑
// 这里可以根据传入的loginId来设置用户的登录状态
}
@Override
public void logout() {
// 实现登出逻辑
// 清除用户的登录状态
}
@Override
public boolean hasPermission(String permission) {
// 判断用户是否有某个权限
return "admin".equals(permission); // 假设只有管理员有权限