SA-Token 是一款基于 Java 的轻量级权限认证框架,它提供了一种简单易用、高效可靠的权限认证方案,能够帮助我们快速实现登录功能。
1. 引入依赖
在 pom.xml 文件中引入 SA-Token 的依赖:
<dependency>
<groupId>cn.dev33.satoken</groupId>
<artifactId>sa-token-core</artifactId>
<version>1.22.0</version>
</dependency>
2. 配置 SA-Token
我们可以通过配置类来配置 SA-Token:
@Configuration
public class SaTokenConfig {
@Bean
public SaTokenConfig saTokenConfig() {
return new SaTokenConfig()
.setTokenName("token") // 设置 token 名称
.setIsShare(true); // 设置是否共享登录状态
}
@Bean
public SaTokenListener saTokenListener() {
return new SaTokenListener() {
@Override
public void doLogin(String loginKey, Object loginId, SaTokenInfo tokenInfo) {
// 登录成功后的操作
}
@Override
public void doLogout(String loginKey, Object loginId, String tokenValue) {
// 注销成功后的操作
}
@Override
public void doActivity(String loginKey, Object loginId, SaTokenInfo tokenInfo) {
// 活跃状态下的操作
}
@Override
public void doTimeout(String loginKey, Object loginId, SaTokenInfo tokenInfo) {
// 超时时的操作
}
};
}
}
在以上的配置中,我们设置了 token 的名称为 "token",并将登录状态共享给所有客户端。同时,还定义了一个 SaTokenListener 的实现类,用于监听登录、注销、活跃状态和超时事件。
3. 实现登录接口
@RestController
public class LoginController {
@PostMapping("/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password) {
// 调用登录接口,返回 token 值,如果登录失败则返回 null
String token = SaTokenUtil.login(username, password);
if (token == null) {
return "登录失败";
} else {
return token;
}
}
}
在以上的代码中,我们通过 SaTokenUtil.login 方法来登录,该方法会返回 token 值,如果登录失败则返回 null。
4. 实现登录验证
在需要登录验证的地方,我们可以使用 SaTokenUtil.isLogin 方法来判断用户是否已经登录
@RestController
public class UserController {
@GetMapping("/user")
public String getUserInfo() {
// 判断用户是否已经登录
if (SaTokenUtil.isLogin()) {
// 获取用户信息并返回
return "username: " + SaTokenUtil.getLoginId();
} else {
// 用户未登录,返回错误信息
return "请先登录";
}
}
}
在以上的代码中,我们通过 SaTokenUtil.isLogin 方法来判断用户是否已经登录,如果已经登录则返回用户信息,否则返回错误信息。
5. 实现注销
@RestController
public class LogoutController {
@PostMapping("/logout")
public String logout() {
// 调用注销接口,返回 true 表示注销成功,false 表示注销失败
if (SaTokenUtil.logout()) {
return "注销成功";
} else {
return "注销失败";
}
}
}
在以上的代码中,我们通过 SaTokenUtil.logout 方法来注销,该方法会返回 true 表示注销成功,false 表示注销失败。 至此,我们已经完成了使用 SA-Token 实现登录功能的步骤