sa-token根据不同id判断当前用户是否登陆 我需要一个案例
时间: 2023-08-09 14:09:53 浏览: 240
基于redis实现token验证用户是否登陆
好的,下面给你一个 sa-token 根据不同 id 判断当前用户是否登录的案例。
1. 首先,你需要在 pom.xml 文件中添加 sa-token 的依赖:
```xml
<dependency>
<groupId>cn.dev33.satoken</groupId>
<artifactId>sa-token</artifactId>
<version>1.21.0</version>
</dependency>
```
2. 然后,在 Spring Boot 的配置类中,配置 sa-token 的全局过滤器:
```java
@Configuration
public class SaTokenConfig {
@Bean
public SaTokenConfigure saTokenConfigure() {
return new SaTokenConfigure() {
// 指定 sa-token 在哪些路由上不进行拦截
@Override
public void addExcludedRoutes(SaRouter saRouter) {
saRouter.addExcludeAll();
saRouter.addExcludePath("/login"); // 登录接口
}
// 指定 sa-token 如何认证当前用户
@Override
public void addAuth(SaRouter saRouter) {
saRouter.addAuth("user", (request, response) -> {
// 获取当前请求中的 id 参数
String id = request.getParameter("id");
// 判断该 id 对应的用户是否已经登录
if (id != null && !id.equals("") && id.equals(SaTokenManager.getTokenValueByLoginId("user", id))) {
return true;
}
// 如果没有登录,则返回 false
return false;
});
}
};
}
}
```
3. 接下来,你可以定义一个登录接口,用来生成 sa-token 的令牌:
```java
@RestController
public class LoginController {
@PostMapping("/login")
public String login(String id) {
// 生成 sa-token 的令牌,并将当前用户 id 作为登录 id
SaTokenManager.login("user", id);
return "登录成功!";
}
}
```
4. 最后,你可以定义一个需要登录才能访问的接口,来测试 sa-token 是否能够根据不同 id 判断当前用户是否登录:
```java
@RestController
public class DemoController {
@GetMapping("/demo")
public String demo(String id) {
// 判断当前用户是否已经登录
if (SaTokenManager.isLogin("user", id)) {
return "欢迎访问 demo 接口!";
} else {
return "请先登录!";
}
}
}
```
以上就是 sa-token 根据不同 id 判断当前用户是否登录的案例。在这个案例中,我们使用了 sa-token 的全局过滤器来指定 sa-token 在哪些路由上不进行拦截,使用了 sa-token 的 addAuth 方法来指定 sa-token 如何认证当前用户,使用了 SaTokenManager 的 login 和 isLogin 方法来登录和判断当前用户是否登录。
阅读全文