From 4dbe73dcc5f94213fea068bc8ed9c1dd1b6e7cc6 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sat, 3 Sep 2022 00:19:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=20StpUtil=20=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/dev33/satoken/stp/StpUtil.java | 2 ++ .../dev33/satoken/springboot/BasicsTest.java | 34 +++++++++++++++++-- .../springboot/satoken/StpInterfaceImpl.java | 15 ++++++-- 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java index 8993e7c9..fdf0203b 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java @@ -12,6 +12,8 @@ import java.util.List; */ public class StpUtil { + private StpUtil() {} + /** * 账号类型标识 */ diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/BasicsTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/BasicsTest.java index 4fcf3941..f60606d2 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/BasicsTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/BasicsTest.java @@ -13,6 +13,8 @@ import cn.dev33.satoken.SaManager; import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.exception.DisableLoginException; import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.exception.NotPermissionException; +import cn.dev33.satoken.exception.NotRoleException; import cn.dev33.satoken.session.SaSession; import cn.dev33.satoken.session.SaSessionCustomUtil; import cn.dev33.satoken.stp.StpUtil; @@ -55,6 +57,8 @@ public class BasicsTest { Assertions.assertTrue(StpUtil.isLogin()); Assertions.assertNotNull(token); // token不为null Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 + Assertions.assertEquals(StpUtil.getLoginIdAsInt(), 10001); // loginId=10001 + Assertions.assertEquals(StpUtil.getLoginIdAsString(), "10001"); // loginId=10001 Assertions.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 // db数据 验证 @@ -116,7 +120,12 @@ public class BasicsTest { public void testCheckPermission() { StpUtil.login(10001); - // 权限认证 + // 获取权限 + List permissionList = StpUtil.getPermissionList(); + List permissionList2 = StpUtil.getPermissionList(10001); + Assertions.assertEquals(permissionList.size(), permissionList2.size()); + + // 权限校验 Assertions.assertTrue(StpUtil.hasPermission("user-add")); Assertions.assertTrue(StpUtil.hasPermission("user-list")); Assertions.assertTrue(StpUtil.hasPermission("user")); @@ -128,6 +137,14 @@ public class BasicsTest { // or Assertions.assertTrue(StpUtil.hasPermissionOr("art-add", "comment-add")); Assertions.assertFalse(StpUtil.hasPermissionOr("comment-add", "comment-delete")); + // more + Assertions.assertTrue(StpUtil.hasPermission(10001, "user-add")); + Assertions.assertFalse(StpUtil.hasPermission(10002, "user-add")); + + // 抛异常 + Assertions.assertThrows(NotPermissionException.class, () -> StpUtil.checkPermission("goods-add")); + Assertions.assertThrows(NotPermissionException.class, () -> StpUtil.checkPermissionAnd("goods-add", "art-add")); + Assertions.assertDoesNotThrow(() -> StpUtil.checkPermissionOr("goods-add", "art-add")); } // 测试:角色认证 @@ -135,7 +152,12 @@ public class BasicsTest { public void testCheckRole() { StpUtil.login(10001); - // 角色认证 + // 获取角色 + List roleList = StpUtil.getRoleList(); + List roleList2 = StpUtil.getRoleList(10001); + Assertions.assertEquals(roleList.size(), roleList2.size()); + + // 角色校验 Assertions.assertTrue(StpUtil.hasRole("admin")); Assertions.assertFalse(StpUtil.hasRole("teacher")); // and @@ -144,6 +166,14 @@ public class BasicsTest { // or Assertions.assertTrue(StpUtil.hasRoleOr("admin", "ceo")); Assertions.assertFalse(StpUtil.hasRoleOr("ceo", "cto")); + // more + Assertions.assertTrue(StpUtil.hasRole(10001, "admin")); + Assertions.assertFalse(StpUtil.hasRole(10002, "admin2")); + + // 抛异常 + Assertions.assertThrows(NotRoleException.class, () -> StpUtil.checkRole("ceo")); + Assertions.assertThrows(NotRoleException.class, () -> StpUtil.checkRoleAnd("ceo", "admin")); + Assertions.assertDoesNotThrow(() -> StpUtil.checkRoleOr("ceo", "admin")); } // 测试:根据token强制注销 diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/satoken/StpInterfaceImpl.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/satoken/StpInterfaceImpl.java index 339982ab..2d9b65ec 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/satoken/StpInterfaceImpl.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/satoken/StpInterfaceImpl.java @@ -6,6 +6,7 @@ import java.util.List; import org.springframework.stereotype.Component; import cn.dev33.satoken.stp.StpInterface; +import cn.dev33.satoken.util.SaFoxUtil; /** * 自定义权限验证接口扩展 @@ -21,7 +22,12 @@ public class StpInterfaceImpl implements StpInterface { */ @Override public List getPermissionList(Object loginId, String loginType) { - return Arrays.asList("user*", "art-add", "art-delete", "art-update", "art-get"); + int id = SaFoxUtil.getValueByType(loginId, int.class); + if(id == 10001) { + return Arrays.asList("user*", "art-add", "art-delete", "art-update", "art-get"); + } else { + return null; + } } /** @@ -29,7 +35,12 @@ public class StpInterfaceImpl implements StpInterface { */ @Override public List getRoleList(Object loginId, String loginType) { - return Arrays.asList("admin", "super-admin"); + int id = SaFoxUtil.getValueByType(loginId, int.class); + if(id == 10001) { + return Arrays.asList("admin", "super-admin"); + } else { + return null; + } } }