mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-19 01:58:05 +08:00
注解鉴权 代码示例
This commit is contained in:
@@ -3,8 +3,6 @@ package com.pj;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
import cn.dev33.satoken.SaManager;
|
||||
|
||||
/**
|
||||
* Sa-Token 示例
|
||||
* @author kong
|
||||
@@ -15,7 +13,6 @@ public class SaTokenCaseApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SaTokenCaseApplication.class, args);
|
||||
System.out.println("\n启动成功:Sa-Token配置如下:" + SaManager.getConfig());
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,95 @@
|
||||
package com.pj.cases;
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.dev33.satoken.util.SaResult;
|
||||
|
||||
/**
|
||||
* Sa-Token 注解鉴权示例
|
||||
*
|
||||
* @author kong
|
||||
* @since 2022-10-13
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/at-check/")
|
||||
public class AtCheckController {
|
||||
|
||||
/*
|
||||
* 前提1:首先调用登录接口进行登录,代码在 com.pj.cases.LoginAuthController 中有详细解释,此处不再赘述
|
||||
* ---- http://localhost:8081/acc/doLogin?name=zhang&pwd=123456
|
||||
*
|
||||
* 前提2:项目在配置类中注册拦截器 SaInterceptor ,代码在 com.pj.satoken.SaTokenConfigure
|
||||
* 此拦截器将打开注解鉴权功能
|
||||
*
|
||||
* 然后我们就可以使用以下示例中的代码进行注解鉴权了
|
||||
*/
|
||||
|
||||
// 登录鉴权 ---- http://localhost:8081/at-check/checkLogin
|
||||
// 登录认证后才可以进入方法
|
||||
@SaCheckLogin
|
||||
@RequestMapping("checkLogin")
|
||||
public SaResult checkLogin() {
|
||||
// 通过注解鉴权后才能进入方法 ...
|
||||
return SaResult.ok();
|
||||
}
|
||||
|
||||
// 权限校验 ---- http://localhost:8081/at-check/checkPermission
|
||||
// 只有具有 user.add 权限的账号才可以进入方法
|
||||
@SaCheckPermission("user.add")
|
||||
@RequestMapping("checkPermission")
|
||||
public SaResult checkPermission() {
|
||||
// ...
|
||||
return SaResult.ok();
|
||||
}
|
||||
|
||||
// 权限校验2 ---- http://localhost:8081/at-check/checkPermission2
|
||||
// 一次性校验多个权限,必须全部拥有,才可以进入方法
|
||||
@SaCheckPermission(value = {"user.add", "user.delete", "user.update"}, mode = SaMode.AND)
|
||||
@RequestMapping("checkPermission2")
|
||||
public SaResult checkPermission2() {
|
||||
// ...
|
||||
return SaResult.ok();
|
||||
}
|
||||
|
||||
// 权限校验3 ---- http://localhost:8081/at-check/checkPermission3
|
||||
// 一次性校验多个权限,只要拥有其中一个,就可以进入方法
|
||||
@SaCheckPermission(value = {"user.add", "user.delete", "user.update"}, mode = SaMode.OR)
|
||||
@RequestMapping("checkPermission3")
|
||||
public SaResult checkPermission3() {
|
||||
// ...
|
||||
return SaResult.ok();
|
||||
}
|
||||
|
||||
// 角色校验 ---- http://localhost:8081/at-check/checkRole
|
||||
// 只有具有 super-admin 角色的账号才可以进入方法
|
||||
@SaCheckRole("super-admin")
|
||||
@RequestMapping("checkRole")
|
||||
public SaResult checkRole() {
|
||||
// ...
|
||||
return SaResult.ok();
|
||||
}
|
||||
|
||||
// 角色权限双重 “or校验” ---- http://localhost:8081/at-check/userAdd
|
||||
// 具备 "user.add"权限 或者 "admin"角色 即可通过校验
|
||||
@RequestMapping("userAdd")
|
||||
@SaCheckPermission(value = "user.add", orRole = "admin")
|
||||
public SaResult userAdd() {
|
||||
return SaResult.data("用户信息");
|
||||
}
|
||||
|
||||
// 忽略校验 ---- http://localhost:8081/at-check/ignore
|
||||
// 使用 @SaIgnore 修饰的方法,无需任何校验即可进入,具体使用示例可参照在线文档
|
||||
@SaIgnore
|
||||
@SaCheckLogin
|
||||
@RequestMapping("ignore")
|
||||
public SaResult ignore() {
|
||||
return SaResult.ok();
|
||||
}
|
||||
|
||||
}
|
@@ -18,6 +18,7 @@ public class KickoutController {
|
||||
|
||||
/*
|
||||
* 前提:首先调用登录接口进行登录,代码在 com.pj.cases.LoginAuthController 中有详细解释,此处不再赘述
|
||||
* ---- http://localhost:8081/acc/doLogin?name=zhang&pwd=123456
|
||||
*/
|
||||
|
||||
// 将指定账号强制注销 ---- http://localhost:8081/kickout/logout?userId=10001
|
||||
@@ -48,6 +49,7 @@ public class KickoutController {
|
||||
*/
|
||||
|
||||
// 根据 Token 值踢人 ---- http://localhost:8081/kickout/kickoutByTokenValue?tokenValue=xxxx-xxxx-xxxx-xxxx已登录账号的token值
|
||||
@RequestMapping("kickoutByTokenValue")
|
||||
public SaResult kickoutByTokenValue(String tokenValue) {
|
||||
|
||||
StpUtil.kickoutByTokenValue(tokenValue);
|
||||
|
Reference in New Issue
Block a user