Sa

您所在的位置:网站首页 jfinal前后端分离 Sa

Sa

2023-06-12 03:04| 来源: 网络整理| 查看: 265

Sa-Token是一个轻量级Java权限验证框架。它不仅支持SpringBoot等主流框架,也可以适配Servlet、JFinal等非主流框架。Sa-Token可以用于身份验证、角色权限验证、API接口鉴权等场景。本文将重点介绍在SpringBoot框架中如何使用Sa-Token进行身份验证和角色权限验证。

一、环境搭建

首先,需要在pom.xml文件中添加Sa-Token的依赖:

cn.dev33.satoken sa-token-starter-spring-boot x.x.x

其中x.x.x为最新发布版本号。

然后,在SpringBoot项目的application.yml(或application.properties)文件中进行配置:

# Sa-Token 配置 sa-token: config: tokenName: SATOKEN # token名称 (同时也是cookie名称) tokenValueStyle: uuid # token值的风格:uuid、simple isV : true # 是否在初始化时自动检查Sa-Token配置 isHijack : true # 是否开启防护伪造Sa-Token请求头功能 isAutoRenew : true # 是否开启自动续签,每次操作都刷新token的最后访问时间戳 isSingleton : false # 是否单例模式运行(即一个jvm进程只有一个Sa-Token容器) timeout : 3600 # token过期时间(单位:秒),-1表示永不过期 persistence : "sa-file" # 持久层封装类的Bean名称(只需要填写Bean名称,即可实现持久层存储) 二、身份验证

在Sa-Token中,可以使用 LoginUtil 来进行登录操作。该工具类提供了多种登录方式,包括账号密码登录、二维码登录、微信登录等。

以下是一个简单的账号密码登录示例:

@RestController @RequestMapping("/auth") public class AuthController { /** * 用户名密码登录 */ @PostMapping("/login") public Map login(String username, String password) { try { // 登录 LoginUtil.login(username, password); // 创建返回结果 Map result = new HashMap(); result.put("code", 200); result.put("msg", "登录成功"); return result; } catch (NotLoginException e) { e.printStackTrace(); throw new RuntimeException("登录失败"); } } }

上面的示例中,我们在AuthController中创建了一个 /auth/login 接口,用于处理账号密码登录请求。LoginUtil.login()方法会根据传入的用户名和密码进行身份验证,并返回一个token值。

当登录成功后,我们可以在接口调用的其他方法中获取当前用户信息:

@RestController @RequestMapping("/user") public class UserController { /** * 获取用户信息 */ @GetMapping("/info") public Map getInfo() { // 获取当前用户id String userId = SaTokenManager.getUserId(); // 创建返回结果 Map result = new HashMap(); result.put("code", 200); result.put("msg", "获取用户信息成功"); result.put("data", userId); return result; } }

上面的示例中,我们创建了一个/user/info接口,用于获取当前登录用户的id。其中SaTokenManager.getUserId()方法可以获取当前用户id。

三、角色权限验证

在Sa-Token中,可以使用@SaCheckPermission和@SaCheckRole注解来进行角色权限验证。这两个注解可以分别用于方法级别和类级别。

在类上使用@SaCheckRole注解,表示该类下的所有方法都需要进行角色验证:

@RestController @RequestMapping("/admin") @SaCheckRole("admin") // 要求所有方法都需要admin角色 public class AdminController { /** * 新增用户 */ @PostMapping("/user") @SaCheckPermission("admin:add") // 新增用户需要 admin:add 权限 public Map addUser(String username, String password) { // ... } /** * 获取用户列表 */ @GetMapping("/users") public Map getUsers() { // ... } }

在上面的示例中,我们创建了一个/admin/user接口,只有拥有admin:add权限的用户才能调用该接口。同时,在AdminController类上使用@SaCheckRole注解,表示该类下的所有方法都需要拥有admin角色。

在方法上使用@SaCheckRole和@SaCheckPermission注解,可以单独控制特定方法的权限和角色:

@RestController @RequestMapping("/user") @SaCheckRole("admin") public class UserController { /** * 新增用户 */ @PostMapping("/add") @SaCheckPermission("user:add") public Map addUser(String username, String password) { // ... } /** * 获取用户列表 */ @GetMapping("/list") public Map getUsers() { // ... } }

在上面的示例中,我们创建了一个/user/add接口,只有拥有user:add权限的用户且拥有admin角色的用户才能调用该接口。同时,在UserController类上使用@SaCheckRole注解,表示该类下的所有方法都需要拥有admin角色。

四、总结

Sa-Token是一款轻量级的Java权限验证框架,支持主流的Java框架,并提供了多种身份验证和角色权限验证的方式。在SpringBoot框架中,只需添加依赖、配置文件,以及编写相应的代码即可轻松地使用Sa-Token进行身份验证和角色权限验证。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3