From c894c3d934288aa78ee120dcd341fd074f517cef Mon Sep 17 00:00:00 2001
From: lixiaodong <188029906@qq.com>
Date: Wed, 12 Jul 2023 20:13:22 +0800
Subject: [PATCH] add sa-token
---
smart-admin-api/pom.xml | 18 ++
.../sa/admin/config/JweAspectConfig.java | 4 +-
.../sa/admin/config/SecurityConfig.java | 40 ----
.../sa/admin/config/SecurityMethodConfig.java | 50 ----
.../goods/controller/GoodsController.java | 12 +-
.../business/oa/bank/BankController.java | 2 +-
.../oa/enterprise/EnterpriseController.java | 2 +-
.../oa/invoice/InvoiceController.java | 2 +-
.../notice/controller/NoticeController.java | 6 +-
.../service/DataScopeSqlConfigService.java | 4 +-
.../controller/DepartmentController.java | 8 +-
.../controller/EmployeeController.java | 16 +-
.../service/EmployeePermissionService.java | 41 ----
.../employee/service/EmployeeService.java | 8 +-
.../login/controller/LoginController.java | 34 ++-
.../login/domain/LoginEmployeeDetail.java | 80 +------
.../module/system/login/domain/LoginForm.java | 9 +-
.../system/login/service/LoginService.java | 63 ++---
.../menu/controller/MenuController.java | 14 +-
.../role/controller/RoleController.java | 8 +-
.../controller/RoleDataScopeController.java | 4 +-
.../controller/RoleEmployeeController.java | 8 +-
.../role/controller/RoleMenuController.java | 4 +-
.../system/support/AdminCacheController.java | 6 +-
.../support/AdminChangeLogController.java | 10 +-
.../system/support/AdminConfigController.java | 8 +-
.../system/support/AdminFileController.java | 4 +-
.../support/AdminHelpDocController.java | 14 +-
.../support/AdminLoginLogController.java | 4 +-
.../support/AdminOperateLogController.java | 6 +-
.../system/support/AdminReloadController.java | 6 +-
.../support/AdminSerialNumberController.java | 6 +-
smart-admin-api/sa-common/pom.xml | 11 +-
.../interceptor/AbstractInterceptor.java | 2 +-
.../security/AbstractSecurityConfig.java | 93 --------
.../SecurityAuthenticationFailHandler.java | 43 ----
.../common/security/SecurityMethodSource.java | 66 ------
.../SecurityPermissionCheckService.java | 74 ------
.../common/security/SecurityTokenFilter.java | 64 ------
.../common/common/util/SmartRequestUtil.java | 18 +-
.../sa/common/config/RepeatSubmitConfig.java | 2 +-
.../handler/GlobalExceptionHandler.java | 10 -
.../datatracer/service/DataTracerService.java | 4 +-
.../controller/FeedbackController.java | 3 +-
.../file/controller/FileController.java | 10 +-
.../helpdoc/controller/HelpDocController.java | 2 +-
.../operatelog/core/OperateLogAspect.java | 2 +-
.../support/table/TableColumnController.java | 6 +-
.../module/support/token/LoginDeviceEnum.java | 24 +-
.../module/support/token/TokenService.java | 215 +++---------------
.../src/main/resources/dev/sa-common.yaml | 36 ++-
51 files changed, 227 insertions(+), 959 deletions(-)
delete mode 100644 smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityConfig.java
delete mode 100644 smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityMethodConfig.java
delete mode 100644 smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/AbstractSecurityConfig.java
delete mode 100644 smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityAuthenticationFailHandler.java
delete mode 100644 smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityMethodSource.java
delete mode 100644 smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityPermissionCheckService.java
delete mode 100644 smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityTokenFilter.java
diff --git a/smart-admin-api/pom.xml b/smart-admin-api/pom.xml
index 7211de26..37e2f4ae 100644
--- a/smart-admin-api/pom.xml
+++ b/smart-admin-api/pom.xml
@@ -46,6 +46,7 @@
0.9.1
0.9.0
3.1
+ 1.35.0.RC
@@ -109,6 +110,23 @@
${swagger.version}
+
+
+
+ cn.dev33
+ sa-token-spring-boot-starter
+ ${sa-token-version}
+
+
+
+
+ cn.dev33
+ sa-token-redis-jackson
+ ${sa-token-version}
+
+
+
+
com.alibaba
fastjson
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/JweAspectConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/JweAspectConfig.java
index c4e74ff9..3c6147c1 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/JweAspectConfig.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/JweAspectConfig.java
@@ -4,8 +4,6 @@ import net.lab1024.sa.common.common.domain.RequestUser;
import net.lab1024.sa.common.common.util.SmartRequestUtil;
import net.lab1024.sa.common.module.support.jwe.JweAspect;
import net.lab1024.sa.common.module.support.jwe.JweUserKey;
-import net.lab1024.sa.common.module.support.operatelog.core.OperateLogAspect;
-import net.lab1024.sa.common.module.support.operatelog.core.OperateLogConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -27,7 +25,7 @@ public class JweAspectConfig {
@Bean
public JweAspect jweConfig() {
return new JweAspect((request -> {
- RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ RequestUser requestUser = SmartRequestUtil.getUser();
JweUserKey userKey = new JweUserKey();
userKey.setUserId(requestUser.getUserId());
userKey.setUserName(requestUser.getUserName());
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityConfig.java
deleted file mode 100644
index 8f12ba27..00000000
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package net.lab1024.sa.admin.config;
-
-import net.lab1024.sa.admin.module.system.login.service.LoginService;
-import net.lab1024.sa.common.common.security.AbstractSecurityConfig;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.function.BiFunction;
-
-/**
- * 权限配置
- *
- * @Author 1024创新实验室: 罗伊
- * @Date 2022-05-30 21:22:12
- * @Wechat zhuoda1024
- * @Email lab1024@163.com
- * @Copyright 1024创新实验室 ( https://1024lab.net )
- */
-@Configuration
-public class SecurityConfig extends AbstractSecurityConfig {
- /**
- * 获取TOKEN 解析类
- */
- @Autowired
- private LoginService loginService;
-
- @Override
- protected BiFunction userFunction() {
- return (token, request) -> loginService.getLoginUserDetail(token, request);
- }
-
- @Override
- protected String[] getAuthenticatedUrlPatterns() {
- return new String[]{"/**"};
- }
-
-
-}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityMethodConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityMethodConfig.java
deleted file mode 100644
index 772b2d5d..00000000
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityMethodConfig.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package net.lab1024.sa.admin.config;
-
-import net.lab1024.sa.admin.module.system.login.domain.LoginEmployeeDetail;
-import net.lab1024.sa.common.common.annoation.SaAuth;
-import net.lab1024.sa.common.common.security.SecurityMethodSource;
-import net.lab1024.sa.common.common.security.SecurityPermissionCheckService;
-import org.springframework.context.annotation.Bean;
-import org.springframework.security.access.expression.method.ExpressionBasedAnnotationAttributeFactory;
-import org.springframework.security.access.method.MethodSecurityMetadataSource;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
-import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration;
-import org.springframework.security.core.Authentication;
-
-/**
- * 1、以类名加方法名为权限字符串的校验模式
- * 2、重写MethodSecurityMetadataSource将优化security配置,只需在方法上加上@saAuth注解,方法上就会存在权限(权限字符串为类名加方法名),而无需另外手动设置,减轻后端开发成本
- * 3、security将不再依据权限字符串进行权限控制,
- * 4、security将依据对应权限字符串下的接口权限进行控制
- * 5、采用此配置原@PreAuthorize依然有效
- * 6、如若无需此配置,需将@EnableGlobalMethodSecurity注解添加至SecurityConfig类上
- *
- * @Author 1024创新实验室: 罗伊
- * @Date 2021-08-31 0:01
- * @Wechat zhuoda1024
- * @Email lab1024@163.com
- * @Copyright 1024创新实验室 ( https://1024lab.net )
- */
-@EnableGlobalMethodSecurity(prePostEnabled = true)
-public class SecurityMethodConfig extends GlobalMethodSecurityConfiguration {
-
- @Bean(SaAuth.saAuth)
- public SecurityPermissionCheckService securityPermissionCheckService() {
- return new SecurityPermissionCheckService() {
- @Override
- public boolean checkPermission(Authentication authentication, String permission) {
- LoginEmployeeDetail loginEmployeeDetail = (LoginEmployeeDetail) authentication.getPrincipal();
- if (loginEmployeeDetail.getAdministratorFlag()) {
- return true;
- }
- return super.permissionJudge(loginEmployeeDetail, permission);
- }
- };
- }
-
- @Override
- public MethodSecurityMetadataSource customMethodSecurityMetadataSource() {
- ExpressionBasedAnnotationAttributeFactory attributeFactory = new ExpressionBasedAnnotationAttributeFactory(this.getExpressionHandler());
- return new SecurityMethodSource(attributeFactory, SaAuth.saAuth);
- }
-}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java
index 7fa863c2..9652c258 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.business.goods.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.admin.common.AdminBaseController;
@@ -14,7 +15,6 @@ import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.common.domain.ValidateList;
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -38,35 +38,35 @@ public class GoodsController extends AdminBaseController {
@ApiOperation("分页查询 @author 胡克")
@PostMapping("/goods/query")
- @PreAuthorize("@saAuth.checkPermission('goods:query')")
+ @SaCheckPermission("@saAuth.checkPermission('goods:query')")
public ResponseDTO> query(@RequestBody @Valid GoodsQueryForm queryForm) {
return goodsService.query(queryForm);
}
@ApiOperation("添加商品 @author 胡克")
@PostMapping("/goods/add")
- @PreAuthorize("@saAuth.checkPermission('goods:add')")
+ @SaCheckPermission("@saAuth.checkPermission('goods:add')")
public ResponseDTO add(@RequestBody @Valid GoodsAddForm addForm) {
return goodsService.add(addForm);
}
@ApiOperation("更新商品 @author 胡克")
@PostMapping("/goods/update")
- @PreAuthorize("@saAuth.checkPermission('goods:update')")
+ @SaCheckPermission("@saAuth.checkPermission('goods:update')")
public ResponseDTO update(@RequestBody @Valid GoodsUpdateForm updateForm) {
return goodsService.update(updateForm);
}
@ApiOperation("删除 @author 卓大")
@GetMapping("/goods/delete/{goodsId}")
- @PreAuthorize("@saAuth.checkPermission('goods:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('goods:delete')")
public ResponseDTO delete(@PathVariable Long goodsId) {
return goodsService.delete(goodsId);
}
@ApiOperation("批量 @author 卓大")
@PostMapping("/goods/batchDelete")
- @PreAuthorize("@saAuth.checkPermission('goods:batchDelete')")
+ @SaCheckPermission("@saAuth.checkPermission('goods:batchDelete')")
public ResponseDTO batchDelete(@RequestBody @Valid ValidateList idList) {
return goodsService.batchDelete(idList);
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java
index 96fbea31..bc99f346 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java
@@ -54,7 +54,7 @@ public class BankController {
@ApiOperation(value = "新建银行信息 @author 善逸")
@PostMapping("/oa/bank/create")
public ResponseDTO createBank(@RequestBody @Valid BankCreateForm createVO) {
- RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ RequestUser requestUser = SmartRequestUtil.getUser();
createVO.setCreateUserId(requestUser.getUserId());
createVO.setCreateUserName(requestUser.getUserName());
return bankService.createBank(createVO);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseController.java
index efc0143b..6f36b68b 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseController.java
@@ -56,7 +56,7 @@ public class EnterpriseController {
@PostMapping("/oa/enterprise/create")
@SaAuth
public ResponseDTO createEnterprise(@RequestBody @Valid EnterpriseCreateForm createVO) {
- RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ RequestUser requestUser = SmartRequestUtil.getUser();
createVO.setCreateUserId(requestUser.getUserId());
createVO.setCreateUserName(requestUser.getUserName());
return enterpriseService.createEnterprise(createVO);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java
index 40909dc9..fb9d1bcd 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java
@@ -52,7 +52,7 @@ public class InvoiceController {
@ApiOperation(value = "新建发票信息 @author 善逸")
@PostMapping("/oa/invoice/create")
public ResponseDTO createInvoice(@RequestBody @Valid InvoiceAddForm createVO) {
- RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ RequestUser requestUser = SmartRequestUtil.getUser();
createVO.setCreateUserId(requestUser.getUserId());
createVO.setCreateUserName(requestUser.getUserName());
return invoiceService.createInvoice(createVO);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/controller/NoticeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/controller/NoticeController.java
index 8ac0f311..42eff483 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/controller/NoticeController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/controller/NoticeController.java
@@ -83,7 +83,7 @@ public class NoticeController {
@RepeatSubmit
@SaAuth
public ResponseDTO add(@RequestBody @Valid NoticeAddForm addForm) {
- addForm.setCreateUserId(SmartRequestUtil.getRequestUserId());
+ addForm.setCreateUserId(SmartRequestUtil.getUserId());
return noticeService.add(addForm);
}
@@ -114,7 +114,7 @@ public class NoticeController {
@GetMapping("/oa/notice/employee/view/{noticeId}")
public ResponseDTO view(@PathVariable Long noticeId, HttpServletRequest request) {
return noticeEmployeeService.view(
- SmartRequestUtil.getRequestUserId(),
+ SmartRequestUtil.getUserId(),
noticeId,
ServletUtil.getClientIP(request),
request.getHeader("User-Agent")
@@ -124,7 +124,7 @@ public class NoticeController {
@ApiOperation("【员工】通知公告-查询全部 @author 卓大")
@PostMapping("/oa/notice/employee/query")
public ResponseDTO> queryEmployeeNotice(@RequestBody @Valid NoticeEmployeeQueryForm noticeEmployeeQueryForm) {
- return noticeEmployeeService.queryList(SmartRequestUtil.getRequestUserId(), noticeEmployeeQueryForm);
+ return noticeEmployeeService.queryList(SmartRequestUtil.getUserId(), noticeEmployeeQueryForm);
}
@ApiOperation("【员工】通知公告-查询 查看记录 @author 卓大")
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java
index fc98e24b..1148d030 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java
@@ -1,11 +1,11 @@
package net.lab1024.sa.admin.module.system.datascope.service;
import lombok.extern.slf4j.Slf4j;
+import net.lab1024.sa.admin.module.system.datascope.DataScope;
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeTypeEnum;
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEnum;
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeWhereInTypeEnum;
import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeSqlConfig;
-import net.lab1024.sa.admin.module.system.datascope.DataScope;
import net.lab1024.sa.admin.module.system.datascope.strategy.DataScopePowerStrategy;
import net.lab1024.sa.common.common.util.SmartRequestUtil;
import org.apache.commons.collections4.CollectionUtils;
@@ -108,7 +108,7 @@ public class DataScopeSqlConfigService {
public String getJoinSql(Map paramMap, DataScopeSqlConfig sqlConfigDTO) {
DataScopeTypeEnum dataScopeTypeEnum = sqlConfigDTO.getDataScopeType();
String joinSql = sqlConfigDTO.getJoinSql();
- Long employeeId = SmartRequestUtil.getRequestUserId();
+ Long employeeId = SmartRequestUtil.getUserId();
if (employeeId == null) {
return "";
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/controller/DepartmentController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/controller/DepartmentController.java
index 62e2fe33..fba5bcfa 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/controller/DepartmentController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/controller/DepartmentController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.department.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.admin.common.AdminBaseController;
@@ -12,7 +13,6 @@ import net.lab1024.sa.admin.module.system.department.service.DepartmentService;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -43,21 +43,21 @@ public class DepartmentController extends AdminBaseController {
@ApiOperation(value = "添加部门 @author 卓大")
@PostMapping("/department/add")
- @PreAuthorize("@saAuth.checkPermission('system:department:add')")
+ @SaCheckPermission("@saAuth.checkPermission('system:department:add')")
public ResponseDTO addDepartment(@Valid @RequestBody DepartmentAddForm createDTO) {
return departmentService.addDepartment(createDTO);
}
@ApiOperation(value = "更新部门 @author 卓大")
@PostMapping("/department/update")
- @PreAuthorize("@saAuth.checkPermission('system:department:update')")
+ @SaCheckPermission("@saAuth.checkPermission('system:department:update')")
public ResponseDTO updateDepartment(@Valid @RequestBody DepartmentUpdateForm updateDTO) {
return departmentService.updateDepartment(updateDTO);
}
@ApiOperation(value = "删除部门 @author 卓大")
@GetMapping("/department/delete/{departmentId}")
- @PreAuthorize("@saAuth.checkPermission('system:department:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('system:department:delete')")
public ResponseDTO deleteDepartment(@PathVariable Long departmentId) {
return departmentService.deleteDepartment(departmentId);
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java
index c5f0f325..d5455bef 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.employee.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.admin.common.AdminBaseController;
@@ -12,7 +13,6 @@ import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.common.util.SmartRequestUtil;
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -43,35 +43,35 @@ public class EmployeeController extends AdminBaseController {
@ApiOperation(value = "添加员工(返回添加员工的密码) @author 卓大")
@PostMapping("/employee/add")
- @PreAuthorize("@saAuth.checkPermission('system:employee:add')")
+ @SaCheckPermission("@saAuth.checkPermission('system:employee:add')")
public ResponseDTO addEmployee(@Valid @RequestBody EmployeeAddForm employeeAddForm) {
return employeeService.addEmployee(employeeAddForm);
}
@ApiOperation(value = "更新员工 @author 卓大")
@PostMapping("/employee/update")
- @PreAuthorize("@saAuth.checkPermission('system:employee:update')")
+ @SaCheckPermission("@saAuth.checkPermission('system:employee:update')")
public ResponseDTO updateEmployee(@Valid @RequestBody EmployeeUpdateForm employeeUpdateForm) {
return employeeService.updateEmployee(employeeUpdateForm);
}
@ApiOperation(value = "更新员工禁用/启用状态 @author 卓大")
@GetMapping("/employee/update/disabled/{employeeId}")
- @PreAuthorize("@saAuth.checkPermission('system:employee:disabled')")
+ @SaCheckPermission("@saAuth.checkPermission('system:employee:disabled')")
public ResponseDTO updateDisableFlag(@PathVariable Long employeeId) {
return employeeService.updateDisableFlag(employeeId);
}
@ApiOperation(value = "批量删除员工 @author 卓大")
@PostMapping("/employee/update/batch/delete")
- @PreAuthorize("@saAuth.checkPermission('system:employee:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('system:employee:delete')")
public ResponseDTO batchUpdateDeleteFlag(@RequestBody List employeeIdList) {
return employeeService.batchUpdateDeleteFlag(employeeIdList);
}
@ApiOperation(value = "批量调整员工部门 @author 卓大")
@PostMapping("/employee/update/batch/department")
- @PreAuthorize("@saAuth.checkPermission('system:employee:department:update')")
+ @SaCheckPermission("@saAuth.checkPermission('system:employee:department:update')")
public ResponseDTO batchUpdateDepartment(@Valid @RequestBody EmployeeBatchUpdateDepartmentForm batchUpdateDepartmentForm) {
return employeeService.batchUpdateDepartment(batchUpdateDepartmentForm);
}
@@ -79,13 +79,13 @@ public class EmployeeController extends AdminBaseController {
@ApiOperation(value = "修改密码 @author 卓大")
@PostMapping("/employee/update/password")
public ResponseDTO updatePassword(@Valid @RequestBody EmployeeUpdatePasswordForm updatePasswordForm) {
- updatePasswordForm.setEmployeeId(SmartRequestUtil.getRequestUserId());
+ updatePasswordForm.setEmployeeId(SmartRequestUtil.getUserId());
return employeeService.updatePassword(updatePasswordForm);
}
@ApiOperation(value = "重置员工密码 @author 卓大")
@GetMapping("/employee/update/password/reset/{employeeId}")
- @PreAuthorize("@saAuth.checkPermission('system:employee:password:reset')")
+ @SaCheckPermission("@saAuth.checkPermission('system:employee:password:reset')")
public ResponseDTO resetPassword(@PathVariable Integer employeeId) {
return employeeService.resetPassword(employeeId);
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeePermissionService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeePermissionService.java
index 3e6a0297..6457edd0 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeePermissionService.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeePermissionService.java
@@ -1,19 +1,12 @@
package net.lab1024.sa.admin.module.system.employee.service;
-import net.lab1024.sa.admin.module.system.menu.constant.MenuPermsTypeEnum;
import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO;
import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService;
import net.lab1024.sa.admin.module.system.role.service.RoleMenuService;
-import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.stereotype.Service;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
/**
* 员工权限校验
@@ -33,40 +26,6 @@ public class EmployeePermissionService {
@Autowired
private RoleMenuService roleMenuService;
- /**
- * 构建权限集合
- *
- * @param menuAndPointsList
- */
- public Set extends GrantedAuthority> buildAuthorities(List menuAndPointsList) {
- HashSet permissionList = new HashSet<>();
- for (MenuVO menu : menuAndPointsList) {
- if(menu.getPermsType() == null){
- continue;
- }
-
- String perms = null;
- if(menu.getPermsType().equals(MenuPermsTypeEnum.SPRING_SECURITY.getValue())){
- perms = menu.getWebPerms();
- }else{
- perms = menu.getApiPerms();
- }
-
- if (StringUtils.isEmpty(perms)) {
- continue;
- }
- //接口权限
- String[] split = perms.split(",");
- for (String perm : split) {
- permissionList.add(perm);
- }
- }
-
- Set authorities = new HashSet<>();
- authorities.addAll(permissionList.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toSet()));
- return authorities;
- }
-
/**
* 查询用户拥有的前端菜单项 用于登陆返回 前端动态路由配置
*
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java
index a315397d..3606d781 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java
@@ -206,12 +206,12 @@ public class EmployeeService {
return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST);
}
- boolean disableFlag=!employeeEntity.getDisabledFlag();
+ boolean disableFlag = !employeeEntity.getDisabledFlag();
employeeEntity.setDisabledFlag(disableFlag);
employeeDao.updateDisableFlag(employeeId, disableFlag);
if (employeeEntity.getDisabledFlag()) {
- tokenService.batchRemoveRedisToken(employeeId, UserTypeEnum.ADMIN_EMPLOYEE);
+ tokenService.removeToken(employeeId, UserTypeEnum.ADMIN_EMPLOYEE);
}
return ResponseDTO.ok();
@@ -240,9 +240,7 @@ public class EmployeeService {
}).collect(Collectors.toList());
employeeManager.updateBatchById(deleteList);
- for (Long employeeId : employeeIdList) {
- tokenService.batchRemoveRedisToken(employeeId, UserTypeEnum.ADMIN_EMPLOYEE);
- }
+ tokenService.removeToken(employeeIdList, UserTypeEnum.ADMIN_EMPLOYEE);
return ResponseDTO.ok();
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java
index 1d28888d..ad945a02 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java
@@ -8,17 +8,15 @@ import net.lab1024.sa.admin.module.system.login.domain.LoginEmployeeDetail;
import net.lab1024.sa.admin.module.system.login.domain.LoginForm;
import net.lab1024.sa.admin.module.system.login.service.LoginService;
import net.lab1024.sa.common.common.annoation.NoNeedLogin;
-import net.lab1024.sa.common.common.code.UserErrorCode;
import net.lab1024.sa.common.common.constant.RequestHeaderConst;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.common.util.SmartRequestUtil;
import net.lab1024.sa.common.module.support.captcha.domain.CaptchaVO;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
@@ -40,26 +38,25 @@ public class LoginController {
private LoginService loginService;
@NoNeedLogin
- @PostMapping("/login")
@ApiOperation("登录 @author 卓大")
- public ResponseDTO login(@Valid @RequestBody LoginForm loginForm) {
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ @PostMapping("/login")
+ public ResponseDTO login(@Valid @RequestBody LoginForm loginForm, HttpServletRequest request) {
String ip = ServletUtil.getClientIP(request);
String userAgent = ServletUtil.getHeaderIgnoreCase(request, RequestHeaderConst.USER_AGENT);
return loginService.login(loginForm, ip, userAgent);
}
- @GetMapping("/login/refresh")
@ApiOperation("刷新用户信息(包含用户基础信息、权限信息等等) @author 卓大")
+ @GetMapping("/login/refresh")
public ResponseDTO refresh() {
- loginService.removeLoginUserDetailCache(SmartRequestUtil.getRequestUserId());
+ loginService.removeLoginUserDetailCache(SmartRequestUtil.getUserId());
return ResponseDTO.ok();
}
- @GetMapping("/login/getLoginInfo")
@ApiOperation("获取登录结果信息 @author 卓大")
+ @GetMapping("/login/getLoginInfo")
public ResponseDTO getLoginInfo() {
- Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+ /* Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null) {
return ResponseDTO.error(UserErrorCode.LOGIN_STATE_INVALID);
}
@@ -71,18 +68,19 @@ public class LoginController {
LoginEmployeeDetail loginEmployeeDetail = (LoginEmployeeDetail) authentication.getPrincipal();
loginEmployeeDetail.setLoginPassword(null);
- return ResponseDTO.ok(loginEmployeeDetail);
+ return ResponseDTO.ok(loginEmployeeDetail);*/
+ return ResponseDTO.ok();
}
- @ApiOperation("退出登陆 @author 卓大")
+ @ApiOperation("退出登录 @author 卓大")
@GetMapping("/login/logout")
- public ResponseDTO logout(@RequestHeader(value = RequestHeaderConst.TOKEN, required = false) String token) {
- return loginService.logout(token, SmartRequestUtil.getRequestUser());
+ public ResponseDTO logout() {
+ return loginService.logout(SmartRequestUtil.getUser());
}
+ @NoNeedLogin
@ApiOperation("获取验证码 @author 卓大")
@GetMapping("/login/getCaptcha")
- @NoNeedLogin
public ResponseDTO getCaptcha() {
return loginService.getCaptcha();
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginEmployeeDetail.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginEmployeeDetail.java
index a8be6eef..00596b76 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginEmployeeDetail.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginEmployeeDetail.java
@@ -8,13 +8,9 @@ import net.lab1024.sa.common.common.domain.RequestUser;
import net.lab1024.sa.common.common.enumeration.GenderEnum;
import net.lab1024.sa.common.common.enumeration.UserTypeEnum;
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
import java.time.LocalDateTime;
-import java.util.Collection;
import java.util.List;
-import java.util.Set;
/**
* 员工登录
@@ -26,7 +22,7 @@ import java.util.Set;
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
*/
@Data
-public class LoginEmployeeDetail implements UserDetails, RequestUser {
+public class LoginEmployeeDetail implements RequestUser {
@ApiModelProperty("token")
private String token;
@@ -79,65 +75,6 @@ public class LoginEmployeeDetail implements UserDetails, RequestUser {
@ApiModelProperty("请求user-agent")
private String userAgent;
- /**
- * security 权限串
- */
- private Set extends GrantedAuthority> authorities;
-
- @Override
- public Collection extends GrantedAuthority> getAuthorities() {
- return authorities;
- }
-
- @Override
- @JsonIgnore
- public String getPassword() {
- return this.loginPassword;
- }
-
- @Override
- public String getUsername() {
- return this.getLoginName();
- }
-
- /**
- * 账户是否未过期,过期无法验证
- */
- @Override
- public boolean isAccountNonExpired() {
- return true;
- }
-
- /**
- * 指定用户是否解锁,锁定的用户无法进行身份验证
- *
- * @return
- */
- @Override
- public boolean isAccountNonLocked() {
- return true;
- }
-
- /**
- * 指示是否已过期的用户的凭据(密码),过期的凭据防止认证
- *
- * @return
- */
- @Override
- public boolean isCredentialsNonExpired() {
- return true;
- }
-
- /**
- * 是否可用 ,禁用的用户不能身份验证
- *
- * @return
- */
- @Override
- public boolean isEnabled() {
- return true;
- }
-
@Override
public Long getUserId() {
return employeeId;
@@ -147,19 +84,4 @@ public class LoginEmployeeDetail implements UserDetails, RequestUser {
public String getUserName() {
return actualName;
}
-
- @Override
- public UserTypeEnum getUserType() {
- return userType;
- }
-
- @Override
- public String getIp() {
- return this.ip;
- }
-
- @Override
- public String getUserAgent() {
- return this.userAgent;
- }
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginForm.java
index c7e9ffb3..7a859946 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginForm.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginForm.java
@@ -24,8 +24,8 @@ import javax.validation.constraints.Pattern;
@Data
public class LoginForm extends CaptchaForm {
- @ApiModelProperty("登录名")
- @NotBlank(message = "登录名不能为空")
+ @ApiModelProperty("登录账号")
+ @NotBlank(message = "登录账号不能为空")
@Length(max = 30, message = "登录账号最多30字符")
private String loginName;
@@ -34,8 +34,7 @@ public class LoginForm extends CaptchaForm {
@Pattern(regexp = SmartVerificationUtil.PWD_REGEXP, message = "请输入6-15位密码(数字|大小写字母|小数点)")
private String password;
- @ApiModelProperty(value = "登录终端")
- @ApiModelPropertyEnum(LoginDeviceEnum.class)
- @CheckEnum(value = LoginDeviceEnum.class, required = true, message = "此终端不允许登录")
+ @ApiModelPropertyEnum(desc = "登录终端", value = LoginDeviceEnum.class)
+ @CheckEnum(value = LoginDeviceEnum.class, required = true, message = "登录终端类型错误")
private Integer loginDevice;
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java
index 95dafbe6..6dc36ff3 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java
@@ -1,6 +1,5 @@
package net.lab1024.sa.admin.module.system.login.service;
-import cn.hutool.extra.servlet.ServletUtil;
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
import lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO;
@@ -11,7 +10,6 @@ import net.lab1024.sa.admin.module.system.employee.service.EmployeeService;
import net.lab1024.sa.admin.module.system.login.domain.LoginEmployeeDetail;
import net.lab1024.sa.admin.module.system.login.domain.LoginForm;
import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO;
-import net.lab1024.sa.common.common.constant.RequestHeaderConst;
import net.lab1024.sa.common.common.constant.StringConst;
import net.lab1024.sa.common.common.domain.RequestUser;
import net.lab1024.sa.common.common.domain.ResponseDTO;
@@ -31,7 +29,6 @@ import net.lab1024.sa.common.module.support.token.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.ConcurrentMap;
@@ -55,9 +52,6 @@ public class LoginService {
@Autowired
private DepartmentService departmentService;
- @Autowired
- private TokenService tokenService;
-
@Autowired
private CaptchaService captchaService;
@@ -70,6 +64,9 @@ public class LoginService {
@Autowired
private LoginLogService loginLogService;
+ @Autowired
+ private TokenService tokenService;
+
/**
* 登录信息二级缓存
*/
@@ -88,17 +85,15 @@ public class LoginService {
* 员工登陆
*
* @param loginForm
+ * @param ip
+ * @param userAgent
* @return 返回用户登录信息
*/
public ResponseDTO login(LoginForm loginForm, String ip, String userAgent) {
- LoginDeviceEnum loginDeviceEnum = SmartEnumUtil.getEnumByValue(loginForm.getLoginDevice(), LoginDeviceEnum.class);
- if (loginDeviceEnum == null) {
- return ResponseDTO.userErrorParam("登录设备暂不支持!");
- }
// 校验 图形验证码
ResponseDTO checkCaptcha = captchaService.checkCaptcha(loginForm);
if (!checkCaptcha.getOk()) {
- return ResponseDTO.error(checkCaptcha);
+ // TODO listen 待放开 return ResponseDTO.error(checkCaptcha);
}
/**
@@ -126,8 +121,9 @@ public class LoginService {
}
// 生成 登录token,保存token
- Boolean superPasswordFlag = superPassword.equals(requestPassword);
- String token = tokenService.generateToken(employeeEntity.getEmployeeId(), employeeEntity.getActualName(), UserTypeEnum.ADMIN_EMPLOYEE, loginDeviceEnum, superPasswordFlag);
+ boolean superPasswordFlag = superPassword.equals(requestPassword);
+ LoginDeviceEnum loginDeviceEnum = SmartEnumUtil.getEnumByValue(loginForm.getLoginDevice(), LoginDeviceEnum.class);
+ String token = tokenService.generateToken(employeeEntity.getEmployeeId(), employeeEntity.getActualName(), UserTypeEnum.ADMIN_EMPLOYEE, loginDeviceEnum);
//获取员工登录信息
LoginEmployeeDetail loginEmployeeDetail = loadLoginInfo(employeeEntity);
@@ -165,7 +161,7 @@ public class LoginService {
//前端菜单
loginEmployeeDetail.setMenuList(menuAndPointsList);
//后端权限
- loginEmployeeDetail.setAuthorities(employeePermissionService.buildAuthorities(menuAndPointsList));
+ // loginEmployeeDetail.setAuthorities(employeePermissionService.buildAuthorities(menuAndPointsList));
//上次登录信息
LoginLogVO loginLogVO = loginLogService.queryLastByUserId(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE);
@@ -209,48 +205,15 @@ public class LoginService {
loginUserDetailCache.remove(requestUserId);
}
- /**
- * 根据登陆token 获取员请求工信息
- *
- * @param
- * @return
- */
- public LoginEmployeeDetail getLoginUserDetail(String token, HttpServletRequest request) {
- Long requestUserId = tokenService.getUserIdAndValidateToken(token);
- if (requestUserId == null) {
- return null;
- }
- // 查询用户信息
- LoginEmployeeDetail loginEmployeeDetail = loginUserDetailCache.get(requestUserId);
- if (loginEmployeeDetail == null) {
- // 员工基本信息
- EmployeeEntity employeeEntity = employeeService.getById(requestUserId);
- if (employeeEntity == null) {
- return null;
- }
-
- loginEmployeeDetail = this.loadLoginInfo(employeeEntity);
- loginEmployeeDetail.setToken(token);
- loginUserDetailCache.put(requestUserId, loginEmployeeDetail);
- }
-
- //更新请求ip和user agent
- loginEmployeeDetail.setUserAgent(ServletUtil.getHeaderIgnoreCase(request, RequestHeaderConst.USER_AGENT));
- loginEmployeeDetail.setIp(ServletUtil.getClientIP(request));
-
- return loginEmployeeDetail;
- }
-
-
/**
* 退出登陆,清除token缓存
*
* @return
*/
- public ResponseDTO logout(String token, RequestUser requestUser) {
+ public ResponseDTO logout(RequestUser requestUser) {
loginUserDetailCache.remove(requestUser.getUserId());
- tokenService.removeToken(token);
- //保存登出日志
+ tokenService.removeToken();
+ // 保存登出日志
saveLogoutLog(requestUser, requestUser.getIp(), requestUser.getUserAgent());
return ResponseDTO.ok();
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/controller/MenuController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/controller/MenuController.java
index d0b921e7..ab39a213 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/controller/MenuController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/controller/MenuController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.menu.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.admin.common.AdminBaseController;
@@ -14,7 +15,6 @@ import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.common.util.SmartRequestUtil;
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -39,25 +39,25 @@ public class MenuController extends AdminBaseController {
@ApiOperation(value = "添加菜单 @author 卓大")
@PostMapping("/menu/add")
- @PreAuthorize("@saAuth.checkPermission('system:menu:add')")
+ @SaCheckPermission("@saAuth.checkPermission('system:menu:add')")
public ResponseDTO addMenu(@RequestBody @Valid MenuAddForm menuAddForm) {
- menuAddForm.setCreateUserId(SmartRequestUtil.getRequestUserId());
+ menuAddForm.setCreateUserId(SmartRequestUtil.getUserId());
return menuService.addMenu(menuAddForm);
}
@ApiOperation(value = "更新菜单 @author 卓大")
@PostMapping("/menu/update")
- @PreAuthorize("@saAuth.checkPermission('system:menu:update')")
+ @SaCheckPermission("@saAuth.checkPermission('system:menu:update')")
public ResponseDTO updateMenu(@RequestBody @Valid MenuUpdateForm menuUpdateForm) {
- menuUpdateForm.setUpdateUserId(SmartRequestUtil.getRequestUserId());
+ menuUpdateForm.setUpdateUserId(SmartRequestUtil.getUserId());
return menuService.updateMenu(menuUpdateForm);
}
@ApiOperation(value = "批量删除菜单 @author 卓大")
@GetMapping("/menu/batchDelete")
- @PreAuthorize("@saAuth.checkPermission('system:menu:delete,system:menu:batch:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('system:menu:delete,system:menu:batch:delete')")
public ResponseDTO batchDeleteMenu(@RequestParam("menuIdList") List menuIdList) {
- return menuService.batchDeleteMenu(menuIdList, SmartRequestUtil.getRequestUserId());
+ return menuService.batchDeleteMenu(menuIdList, SmartRequestUtil.getUserId());
}
@ApiOperation(value = "查询菜单列表 @author 卓大")
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleController.java
index 4fcdc2d2..690bb17d 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.role.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.admin.common.AdminBaseController;
@@ -11,7 +12,6 @@ import net.lab1024.sa.admin.module.system.role.service.RoleService;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -36,21 +36,21 @@ public class RoleController extends AdminBaseController {
@ApiOperation("添加角色 @author 卓大")
@PostMapping("/role/add")
- @PreAuthorize("@saAuth.checkPermission('system:role:add')")
+ @SaCheckPermission("@saAuth.checkPermission('system:role:add')")
public ResponseDTO addRole(@Valid @RequestBody RoleAddForm roleAddForm) {
return roleService.addRole(roleAddForm);
}
@ApiOperation("删除角色 @author 卓大")
@GetMapping("/role/delete/{roleId}")
- @PreAuthorize("@saAuth.checkPermission('system:role:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('system:role:delete')")
public ResponseDTO deleteRole(@PathVariable Long roleId) {
return roleService.deleteRole(roleId);
}
@ApiOperation("更新角色 @author 卓大")
@PostMapping("/role/update")
- @PreAuthorize("@saAuth.checkPermission('system:role:update')")
+ @SaCheckPermission("@saAuth.checkPermission('system:role:update')")
public ResponseDTO updateRole(@Valid @RequestBody RoleUpdateForm roleUpdateDTO) {
return roleService.updateRole(roleUpdateDTO);
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleDataScopeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleDataScopeController.java
index a2814595..945294e4 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleDataScopeController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleDataScopeController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.role.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.admin.common.AdminBaseController;
@@ -10,7 +11,6 @@ import net.lab1024.sa.admin.module.system.role.service.RoleDataScopeService;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -41,7 +41,7 @@ public class RoleDataScopeController extends AdminBaseController {
@ApiOperation(value = "批量设置某角色数据范围 @author 卓大")
@PostMapping("/role/dataScope/updateRoleDataScopeList")
- @PreAuthorize("@saAuth.checkPermission('system:role:dataScope:update')")
+ @SaCheckPermission("@saAuth.checkPermission('system:role:dataScope:update')")
public ResponseDTO updateRoleDataScopeList(@RequestBody @Valid RoleDataScopeUpdateForm roleDataScopeUpdateForm) {
return roleDataScopeService.updateRoleDataScopeList(roleDataScopeUpdateForm);
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleEmployeeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleEmployeeController.java
index 19ad623c..ca9f9f1c 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleEmployeeController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleEmployeeController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.role.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.admin.common.AdminBaseController;
@@ -13,7 +14,6 @@ import net.lab1024.sa.common.common.domain.PageResult;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -50,21 +50,21 @@ public class RoleEmployeeController extends AdminBaseController {
@ApiOperation(value = "从角色成员列表中移除员工 @author 卓大")
@GetMapping("/role/employee/removeEmployee")
- @PreAuthorize("@saAuth.checkPermission('system:role:employee:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('system:role:employee:delete')")
public ResponseDTO removeEmployee(Long employeeId, Long roleId) {
return roleEmployeeService.removeRoleEmployee(employeeId, roleId);
}
@ApiOperation(value = "从角色成员列表中批量移除员工 @author 卓大")
@PostMapping("/role/employee/batchRemoveRoleEmployee")
- @PreAuthorize("@saAuth.checkPermission('system:role:employee:batch:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('system:role:employee:batch:delete')")
public ResponseDTO batchRemoveEmployee(@Valid @RequestBody RoleEmployeeUpdateForm updateForm) {
return roleEmployeeService.batchRemoveRoleEmployee(updateForm);
}
@ApiOperation(value = "角色成员列表中批量添加员工 @author 卓大")
@PostMapping("/role/employee/batchAddRoleEmployee")
- @PreAuthorize("@saAuth.checkPermission('system:role:employee:add')")
+ @SaCheckPermission("@saAuth.checkPermission('system:role:employee:add')")
public ResponseDTO addEmployeeList(@Valid @RequestBody RoleEmployeeUpdateForm addForm) {
return roleEmployeeService.batchAddRoleEmployee(addForm);
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleMenuController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleMenuController.java
index 02e7b8c3..7c519f3c 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleMenuController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleMenuController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.role.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.admin.common.AdminBaseController;
@@ -10,7 +11,6 @@ import net.lab1024.sa.admin.module.system.role.service.RoleMenuService;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -34,7 +34,7 @@ public class RoleMenuController extends AdminBaseController {
@ApiOperation("更新角色权限 @author 卓大")
@PostMapping("/role/menu/updateRoleMenu")
- @PreAuthorize("@saAuth.checkPermission('system:role:menu:update')")
+ @SaCheckPermission("@saAuth.checkPermission('system:role:menu:update')")
public ResponseDTO updateRoleMenu(@Valid @RequestBody RoleMenuUpdateForm updateDTO) {
return roleMenuService.updateRoleMenu(updateDTO);
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java
index 492a063b..103ab12d 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.controller.SupportBaseController;
@@ -7,7 +8,6 @@ import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.constant.SwaggerTagConst;
import net.lab1024.sa.common.module.support.cache.CacheService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@@ -38,7 +38,7 @@ public class AdminCacheController extends SupportBaseController {
@ApiOperation(value = "移除某个缓存 @author 罗伊")
- @PreAuthorize("@saAuth.checkPermission('support:cache:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('support:cache:delete')")
@GetMapping("/cache/remove/{cacheName}")
public ResponseDTO removeCache(@PathVariable String cacheName) {
cacheService.removeCache(cacheName);
@@ -47,7 +47,7 @@ public class AdminCacheController extends SupportBaseController {
@ApiOperation(value = "获取某个缓存的所有key @author 罗伊")
- @PreAuthorize("@saAuth.checkPermission('support:cache:keys')")
+ @SaCheckPermission("@saAuth.checkPermission('support:cache:keys')")
@GetMapping("/cache/keys/{cacheName}")
public ResponseDTO> cacheKeys(@PathVariable String cacheName) {
return ResponseDTO.ok(cacheService.cacheKey(cacheName));
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminChangeLogController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminChangeLogController.java
index 7c4b1eec..49079729 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminChangeLogController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminChangeLogController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.domain.ResponseDTO;
@@ -9,7 +10,6 @@ import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogAddFo
import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogUpdateForm;
import net.lab1024.sa.common.module.support.changelog.service.ChangeLogService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -31,27 +31,27 @@ public class AdminChangeLogController {
@ApiOperation("添加 @author 卓大")
@PostMapping("/changeLog/add")
- @PreAuthorize("@saAuth.checkPermission('changeLog:add')")
+ @SaCheckPermission("@saAuth.checkPermission('changeLog:add')")
public ResponseDTO add(@RequestBody @Valid ChangeLogAddForm addForm) {
return changeLogService.add(addForm);
}
@ApiOperation("更新 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('changeLog:update')")
+ @SaCheckPermission("@saAuth.checkPermission('changeLog:update')")
@PostMapping("/changeLog/update")
public ResponseDTO update(@RequestBody @Valid ChangeLogUpdateForm updateForm) {
return changeLogService.update(updateForm);
}
@ApiOperation("批量删除 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('changeLog:batchDelete')")
+ @SaCheckPermission("@saAuth.checkPermission('changeLog:batchDelete')")
@PostMapping("/changeLog/batchDelete")
public ResponseDTO batchDelete(@RequestBody ValidateList idList) {
return changeLogService.batchDelete(idList);
}
@ApiOperation("单个删除 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('changeLog:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('changeLog:delete')")
@GetMapping("/changeLog/delete/{changeLogId}")
public ResponseDTO batchDelete(@PathVariable Long changeLogId) {
return changeLogService.delete(changeLogId);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminConfigController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminConfigController.java
index 78ab1722..d776b079 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminConfigController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminConfigController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.controller.SupportBaseController;
@@ -12,7 +13,6 @@ import net.lab1024.sa.common.module.support.config.domain.ConfigQueryForm;
import net.lab1024.sa.common.module.support.config.domain.ConfigUpdateForm;
import net.lab1024.sa.common.module.support.config.domain.ConfigVO;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@@ -36,21 +36,21 @@ public class AdminConfigController extends SupportBaseController {
private ConfigService configService;
@ApiOperation("分页查询系统配置 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('support:config:query')")
+ @SaCheckPermission("@saAuth.checkPermission('support:config:query')")
@PostMapping("/config/query")
public ResponseDTO> querySystemConfigPage(@RequestBody @Valid ConfigQueryForm queryForm) {
return configService.queryConfigPage(queryForm);
}
@ApiOperation("添加配置参数 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('support:config:add')")
+ @SaCheckPermission("@saAuth.checkPermission('support:config:add')")
@PostMapping("/config/add")
public ResponseDTO addSystemConfig(@RequestBody @Valid ConfigAddForm configAddForm) {
return configService.add(configAddForm);
}
@ApiOperation("修改配置参数 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('support:config:update')")
+ @SaCheckPermission("@saAuth.checkPermission('support:config:update')")
@PostMapping("/config/update")
public ResponseDTO updateSystemConfig(@RequestBody @Valid ConfigUpdateForm updateForm) {
return configService.updateSystemConfig(updateForm);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminFileController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminFileController.java
index b4528715..674571d4 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminFileController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminFileController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.controller.SupportBaseController;
@@ -10,7 +11,6 @@ import net.lab1024.sa.common.module.support.file.domain.form.FileQueryForm;
import net.lab1024.sa.common.module.support.file.domain.vo.FileVO;
import net.lab1024.sa.common.module.support.file.service.FileService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@@ -34,7 +34,7 @@ public class AdminFileController extends SupportBaseController {
private FileService fileService;
@ApiOperation("分页查询 @author 1024创新实验室-主任-卓大")
- @PreAuthorize("@saAuth.checkPermission('support:file:query')")
+ @SaCheckPermission("@saAuth.checkPermission('support:file:query')")
@PostMapping("/file/queryPage")
public ResponseDTO> queryPage(@RequestBody @Valid FileQueryForm queryForm) {
return ResponseDTO.ok(fileService.queryPage(queryForm));
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHelpDocController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHelpDocController.java
index 5d0949e2..ae08aa6c 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHelpDocController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHelpDocController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.controller.SupportBaseController;
@@ -13,7 +14,6 @@ import net.lab1024.sa.common.module.support.helpdoc.service.HelpDocCatalogServic
import net.lab1024.sa.common.module.support.helpdoc.service.HelpDocService;
import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -42,14 +42,14 @@ public class AdminHelpDocController extends SupportBaseController {
@ApiOperation("帮助文档目录-添加 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('helpDocCatalog:addCategory')")
+ @SaCheckPermission("@saAuth.checkPermission('helpDocCatalog:addCategory')")
@PostMapping("/helpDoc/helpDocCatalog/add")
public ResponseDTO addHelpDocCatalog(@RequestBody @Valid HelpDocCatalogAddForm helpDocCatalogAddForm) {
return helpDocCatalogService.add(helpDocCatalogAddForm);
}
@ApiOperation("帮助文档目录-更新 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('helpDocCatalog:edit')")
+ @SaCheckPermission("@saAuth.checkPermission('helpDocCatalog:edit')")
@PostMapping("/helpDoc/helpDocCatalog/update")
public ResponseDTO updateHelpDocCatalog(@RequestBody @Valid HelpDocCatalogUpdateForm helpDocCatalogUpdateForm) {
return helpDocCatalogService.update(helpDocCatalogUpdateForm);
@@ -64,7 +64,7 @@ public class AdminHelpDocController extends SupportBaseController {
// --------------------- 帮助文档 【管理:增、删、查、改】-------------------------
@ApiOperation("【管理】帮助文档-分页查询 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('helpDoc:query')")
+ @SaCheckPermission("@saAuth.checkPermission('helpDoc:query')")
@PostMapping("/helpDoc/query")
public ResponseDTO> query(@RequestBody @Valid HelpDocQueryForm queryForm) {
return ResponseDTO.ok(helpDocService.query(queryForm));
@@ -77,7 +77,7 @@ public class AdminHelpDocController extends SupportBaseController {
}
@ApiOperation("【管理】帮助文档-添加 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('helpDoc:add')")
+ @SaCheckPermission("@saAuth.checkPermission('helpDoc:add')")
@PostMapping("/helpDoc/add")
@RepeatSubmit
public ResponseDTO add(@RequestBody @Valid HelpDocAddForm addForm) {
@@ -85,7 +85,7 @@ public class AdminHelpDocController extends SupportBaseController {
}
@ApiOperation("【管理】帮助文档-更新 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('helpDoc:update')")
+ @SaCheckPermission("@saAuth.checkPermission('helpDoc:update')")
@PostMapping("/helpDoc/update")
@RepeatSubmit
public ResponseDTO update(@RequestBody @Valid HelpDocUpdateForm updateForm) {
@@ -93,7 +93,7 @@ public class AdminHelpDocController extends SupportBaseController {
}
@ApiOperation("【管理】帮助文档-删除 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('helpDoc:delete')")
+ @SaCheckPermission("@saAuth.checkPermission('helpDoc:delete')")
@GetMapping("/helpDoc/delete/{helpDocId}")
public ResponseDTO delete(@PathVariable Long helpDocId) {
return helpDocService.delete(helpDocId);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java
index 0fd71522..33ec9f90 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.controller.SupportBaseController;
@@ -10,7 +11,6 @@ import net.lab1024.sa.common.module.support.loginlog.LoginLogService;
import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogQueryForm;
import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogVO;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@@ -32,7 +32,7 @@ public class AdminLoginLogController extends SupportBaseController {
private LoginLogService loginLogService;
@ApiOperation(value = "分页查询 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('loginLog:query')")
+ @SaCheckPermission("@saAuth.checkPermission('loginLog:query')")
@PostMapping("/loginLog/page/query")
public ResponseDTO> queryByPage(@RequestBody LoginLogQueryForm queryForm) {
return loginLogService.queryByPage(queryForm);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java
index 85161a6f..3594eaf3 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.controller.SupportBaseController;
@@ -10,7 +11,6 @@ import net.lab1024.sa.common.module.support.operatelog.OperateLogService;
import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogQueryForm;
import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogVO;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
/**
@@ -30,14 +30,14 @@ public class AdminOperateLogController extends SupportBaseController {
private OperateLogService operateLogService;
@ApiOperation(value = "分页查询 @author 罗伊")
- @PreAuthorize("@saAuth.checkPermission('operateLog:query')")
+ @SaCheckPermission("@saAuth.checkPermission('operateLog:query')")
@PostMapping("/operateLog/page/query")
public ResponseDTO> queryByPage(@RequestBody OperateLogQueryForm queryForm) {
return operateLogService.queryByPage(queryForm);
}
@ApiOperation(value = "详情 @author 罗伊")
- @PreAuthorize("@saAuth.checkPermission('operateLog:detail')")
+ @SaCheckPermission("@saAuth.checkPermission('operateLog:detail')")
@GetMapping("/operateLog/detail/{operateLogId}")
public ResponseDTO detail(@PathVariable Long operateLogId) {
return operateLogService.detail(operateLogId);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminReloadController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminReloadController.java
index 24637f6e..56cadbe7 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminReloadController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminReloadController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.controller.SupportBaseController;
@@ -10,7 +11,6 @@ import net.lab1024.sa.common.module.support.reload.domain.ReloadForm;
import net.lab1024.sa.common.module.support.reload.domain.ReloadItemVO;
import net.lab1024.sa.common.module.support.reload.domain.ReloadResultVO;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -39,14 +39,14 @@ public class AdminReloadController extends SupportBaseController {
}
@ApiOperation(value = "获取reload result @author 开云")
- @PreAuthorize("@saAuth.checkPermission('support:reload:result')")
+ @SaCheckPermission("@saAuth.checkPermission('support:reload:result')")
@GetMapping("/reload/result/{tag}")
public ResponseDTO> queryReloadResult(@PathVariable("tag") String tag) {
return reloadService.queryReloadItemResult(tag);
}
@ApiOperation(value = "通过tag更新标识 @author 开云")
- @PreAuthorize("@saAuth.checkPermission('support:reload:execute')")
+ @SaCheckPermission("@saAuth.checkPermission('support:reload:execute')")
@PostMapping("/reload/update")
public ResponseDTO updateByTag(@RequestBody @Valid ReloadForm reloadForm) {
return reloadService.updateByTag(reloadForm);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSerialNumberController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSerialNumberController.java
index 329a2aaf..670b3985 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSerialNumberController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSerialNumberController.java
@@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.system.support;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.controller.SupportBaseController;
@@ -16,7 +17,6 @@ import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberReco
import net.lab1024.sa.common.module.support.serialnumber.service.SerialNumberRecordService;
import net.lab1024.sa.common.module.support.serialnumber.service.SerialNumberService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -48,7 +48,7 @@ public class AdminSerialNumberController extends SupportBaseController {
private SerialNumberRecordService serialNumberRecordService;
@ApiOperation("生成单号 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('support:serial:number:generate')")
+ @SaCheckPermission("@saAuth.checkPermission('support:serial:number:generate')")
@PostMapping("/serialNumber/generate")
public ResponseDTO> generate(@RequestBody @Valid SerialNumberGenerateForm generateForm) {
SerialNumberIdEnum serialNumberIdEnum = SmartEnumUtil.getEnumByValue(generateForm.getSerialNumberId(), SerialNumberIdEnum.class);
@@ -65,7 +65,7 @@ public class AdminSerialNumberController extends SupportBaseController {
}
@ApiOperation("获取生成记录 @author 卓大")
- @PreAuthorize("@saAuth.checkPermission('support:serial:number:record')")
+ @SaCheckPermission("@saAuth.checkPermission('support:serial:number:record')")
@PostMapping("/serialNumber/queryRecord")
public ResponseDTO> queryRecord(@RequestBody @Valid SerialNumberRecordQueryForm queryForm) {
return ResponseDTO.ok(serialNumberRecordService.query(queryForm));
diff --git a/smart-admin-api/sa-common/pom.xml b/smart-admin-api/sa-common/pom.xml
index 6a5d2b38..9620d010 100644
--- a/smart-admin-api/sa-common/pom.xml
+++ b/smart-admin-api/sa-common/pom.xml
@@ -49,10 +49,15 @@
-
+
- org.springframework.boot
- spring-boot-starter-security
+ cn.dev33
+ sa-token-spring-boot-starter
+
+
+
+ cn.dev33
+ sa-token-redis-jackson
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java
index 62f2042d..0cb82222 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java
@@ -97,7 +97,7 @@ public abstract class AbstractInterceptor implements HandlerInterceptor {
if (StringUtils.isNotBlank(xAccessToken)) {
RequestUser requestUser = userFunction().apply(xAccessToken);
if (requestUser != null) {
- SmartRequestUtil.setRequestUser(requestUser);
+ // SmartRequestUtil.setRequestUser(requestUser);
}
// 有token 无需登录
if (null != noNeedLogin) {
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/AbstractSecurityConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/AbstractSecurityConfig.java
deleted file mode 100644
index 30fc239b..00000000
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/AbstractSecurityConfig.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package net.lab1024.sa.common.common.security;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.config.http.SessionCreationPolicy;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
-import org.springframework.web.filter.CorsFilter;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
-/**
- * Spring Security
- *
- * @Author 1024创新实验室-主任: 卓大
- * @Date 2021/8/3 17:50
- * @Wechat zhuoda1024
- * @Email lab1024@163.com
- * @Copyright 1024创新实验室 ( https://1024lab.net )
- */
-public abstract class AbstractSecurityConfig extends WebSecurityConfigurerAdapter {
- @Autowired
- private CorsFilter corsFilter;
-
- @Autowired
- private List noNeedLoginUrlList;
-
- @Autowired
- private List ignoreUrlList;
-
- /**
- * Token获取用户信息
- *
- * @return
- */
- protected abstract BiFunction userFunction();
-
- /**
- * 需要认证的url集合
- *
- * @return
- */
- protected abstract String[] getAuthenticatedUrlPatterns();
-
- /**
- * 不需要登录的url集合
- *
- * @return
- */
- protected String[] getNoNeedLoginUrl() {
- return noNeedLoginUrlList.toArray(new String[noNeedLoginUrlList.size()]);
- }
-
- /**
- * 忽略的url集合
- *
- * @return
- */
- protected String[] getIgnoreUrlList() {
- return ignoreUrlList.toArray(new String[ignoreUrlList.size()]);
- }
-
- @Override
- protected void configure(HttpSecurity httpSecurity) throws Exception {
- httpSecurity
- // CSRF禁用,因为不使用session
- .csrf().disable()
- // 认证失败处理类
- .exceptionHandling().authenticationEntryPoint(new SecurityAuthenticationFailHandler()).and()
- .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
- // 过滤请求
- .authorizeRequests()
- //忽略的url
- .antMatchers(this.getIgnoreUrlList()).permitAll()
- // 不需要登陆的url
- .antMatchers(this.getNoNeedLoginUrl()).permitAll()
- //需要校验权限的url
- .antMatchers(getAuthenticatedUrlPatterns()).authenticated();
-
- // token filter 进行校验
- httpSecurity.addFilterBefore(new SecurityTokenFilter(this.userFunction()), UsernamePasswordAuthenticationFilter.class);
- httpSecurity.addFilterBefore(corsFilter, SecurityTokenFilter.class);
- // 禁用spring security 使用 X-Frame-Options防止网页被Frame
- httpSecurity.headers().frameOptions().disable();
-
- }
-
-
-}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityAuthenticationFailHandler.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityAuthenticationFailHandler.java
deleted file mode 100644
index 3e146f18..00000000
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityAuthenticationFailHandler.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package net.lab1024.sa.common.common.security;
-
-import com.alibaba.fastjson.JSONObject;
-import net.lab1024.sa.common.common.code.ErrorCode;
-import net.lab1024.sa.common.common.code.UserErrorCode;
-import net.lab1024.sa.common.common.domain.ResponseDTO;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.web.AuthenticationEntryPoint;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * 登录认证失败处理
- *
- * @Author 1024创新实验室: 罗伊
- * @Date 2022-08-26 20:21:10
- * @Wechat zhuoda1024
- * @Email lab1024@163.com
- * @Copyright 1024创新实验室 ( https://1024lab.net )
- */
-public class SecurityAuthenticationFailHandler implements AuthenticationEntryPoint {
-
- @Override
- public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException {
- this.outputResult(response, UserErrorCode.LOGIN_STATE_INVALID);
- }
-
- /**
- * 输出
- *
- * @param response
- * @param errorCode
- * @throws IOException
- */
- private void outputResult(HttpServletResponse response, ErrorCode errorCode) throws IOException {
- String msg = JSONObject.toJSONString(ResponseDTO.error(errorCode));
- response.setContentType("application/json;charset=UTF-8");
- response.getWriter().write(msg);
- response.flushBuffer();
- }
-}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityMethodSource.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityMethodSource.java
deleted file mode 100644
index 290b3d9c..00000000
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityMethodSource.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package net.lab1024.sa.common.common.security;
-
-import net.lab1024.sa.common.common.annoation.SaAuth;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.access.prepost.PreInvocationAttribute;
-import org.springframework.security.access.prepost.PrePostAnnotationSecurityMetadataSource;
-import org.springframework.security.access.prepost.PrePostInvocationAttributeFactory;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * 此类用于默认给所有接口添加权限 @saAuth.checkPermission('%s')
- * %s 为类名.方法名
- * 和使用@PreAuthorize("@saAuth.checkPermission('%s')") 效果一致
- * 避免所有接口都添加一遍 减轻工作量
- *
- * @Author 1024创新实验室: 罗伊
- * @Date 2021-08-30 23:08
- * @Wechat zhuoda1024
- * @Email lab1024@163.com
- * @Copyright 1024创新实验室 ( https://1024lab.net )
- */
-public class SecurityMethodSource extends PrePostAnnotationSecurityMetadataSource {
-
-
- private static String EXPRESSION_FORMAT = "@%s.checkPermission('%s')";
-
- private final PrePostInvocationAttributeFactory attributeFactory;
-
- private String beanName;
-
-
- public SecurityMethodSource(PrePostInvocationAttributeFactory attributeFactory, String beanName) {
- super(attributeFactory);
- this.attributeFactory = attributeFactory;
- this.beanName = beanName;
- }
-
-
- @Override
- public Collection getAttributes(Method method, Class> targetClass) {
- //如果不存在SaAuth采用security认证模式
- SaAuth saAuth = method.getAnnotation(SaAuth.class);
- if (saAuth == null) {
- return super.getAttributes(method, targetClass);
- }
-
- //存在添加以URL为权限字符串的校验模式
- ArrayList configAttributes = new ArrayList(1);
- String classFullName = targetClass.getName();
- String methodName = method.getName();
- String[] classNameArray = StringUtils.split(classFullName, "\\.");
- String controllerName = classNameArray[classNameArray.length - 1];
- String privilegeName = controllerName + "." + methodName;
- String preAuthorizeAttribute = String.format(EXPRESSION_FORMAT, beanName, privilegeName);
- PreInvocationAttribute pre = this.attributeFactory.createPreInvocationAttribute(null, null, preAuthorizeAttribute);
- if (pre != null) {
- configAttributes.add(pre);
- }
- return configAttributes;
- }
-
-}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityPermissionCheckService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityPermissionCheckService.java
deleted file mode 100644
index 29e46559..00000000
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityPermissionCheckService.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package net.lab1024.sa.common.common.security;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import java.util.Arrays;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * 校验权限
- *
- * @Author 1024创新实验室: 罗伊
- * @Date 2022/5/12 21:50
- * @Wechat zhuoda1024
- * @Email lab1024@163.com
- * @Copyright 1024创新实验室 ( https://1024lab.net )
- */
-public abstract class SecurityPermissionCheckService {
-
-
- /**
- * 校验是否有权限
- *
- * @param permission
- * @return
- */
- public boolean checkPermission(String permission) {
- Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
- if (authentication == null) {
- return false;
- }
- return checkPermission(authentication, permission);
- }
-
- /**
- * 校验是否有权限
- *
- * @param authentication
- * @param permission
- * @return
- */
- public abstract boolean checkPermission(Authentication authentication, String permission);
-
- /**
- * 判断
- *
- * @param userDetails
- * @param permissionStr
- * @return
- */
- protected boolean permissionJudge(UserDetails userDetails, String permissionStr) {
- if (CollectionUtils.isEmpty(userDetails.getAuthorities())) {
- return false;
- }
-
- if (StringUtils.isBlank(permissionStr)) {
- return false;
- }
-
- String[] permissionArray = permissionStr.split(",");
- for (String permission : permissionArray) {
- if(userDetails.getAuthorities().contains(new SimpleGrantedAuthority(permission))){
- return true;
- }
- }
- return false;
- }
-}
\ No newline at end of file
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityTokenFilter.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityTokenFilter.java
deleted file mode 100644
index 1a2ef97e..00000000
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityTokenFilter.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package net.lab1024.sa.common.common.security;
-
-import lombok.extern.slf4j.Slf4j;
-import net.lab1024.sa.common.common.constant.RequestHeaderConst;
-import net.lab1024.sa.common.common.domain.RequestUser;
-import net.lab1024.sa.common.common.util.SmartRequestUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
-import org.springframework.web.filter.OncePerRequestFilter;
-
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
-/**
- * 注意此处不能 加入@Component,否则对应ignoreUrl的相关请求 将会进入此Filter,并会覆盖CorsFilter
- *
- * @Author 1024创新实验室: 罗伊
- * @Date 2022/5/12 21:50
- * @Wechat zhuoda1024
- * @Email lab1024@163.com
- * @Copyright 1024创新实验室 ( https://1024lab.net )
- */
-@Slf4j
-public class SecurityTokenFilter extends OncePerRequestFilter {
-
- private BiFunction userFunction;
-
- public SecurityTokenFilter(BiFunction userFunction) {
- this.userFunction = userFunction;
- }
-
- @Override
- protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
- throws ServletException, IOException {
- //需要做token校验, 消息头的token优先于请求query参数的token
- String xHeaderToken = request.getHeader(RequestHeaderConst.TOKEN);
- String xRequestToken = request.getParameter(RequestHeaderConst.TOKEN);
- String xAccessToken = null != xHeaderToken ? xHeaderToken : xRequestToken;
- if (StringUtils.isBlank(xAccessToken)) {
- chain.doFilter(request, response);
- return;
- }
- //清理spring security
- SecurityContextHolder.clearContext();
-
- UserDetails loginUserDetail = userFunction.apply(xAccessToken,request);
- if (null != loginUserDetail) {
- UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUserDetail, null, loginUserDetail.getAuthorities());
- authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
- SecurityContextHolder.getContext().setAuthentication(authenticationToken);
- SmartRequestUtil.setRequestUser((RequestUser) loginUserDetail);
- }
- // 若未给予spring security上下文用户授权 则会授权失败 进入AuthenticationEntryPointImpl
- chain.doFilter(request, response);
- }
-}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartRequestUtil.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartRequestUtil.java
index 40210ba2..03def039 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartRequestUtil.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartRequestUtil.java
@@ -14,24 +14,18 @@ import net.lab1024.sa.common.common.domain.RequestUser;
*/
@Slf4j
public class SmartRequestUtil {
-
- private static final ThreadLocal requestThreadLocal = new ThreadLocal<>();
-
- public static void setRequestUser(RequestUser requestUser) {
- requestThreadLocal.set(requestUser);
+ public static RequestUser getUser() {
+ // TODO listen
+ return null;
}
- public static RequestUser getRequestUser() {
- return requestThreadLocal.get();
- }
-
- public static Long getRequestUserId() {
- RequestUser requestUser = getRequestUser();
+ public static Long getUserId() {
+ RequestUser requestUser = getUser();
return null == requestUser ? null : requestUser.getUserId();
}
public static void remove() {
- requestThreadLocal.remove();
+ // TODO listen
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RepeatSubmitConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RepeatSubmitConfig.java
index fcfdd5ee..9f4083c3 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RepeatSubmitConfig.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RepeatSubmitConfig.java
@@ -31,7 +31,7 @@ public class RepeatSubmitConfig {
* @return
*/
private String ticket(String servletPath) {
- Long userId = SmartRequestUtil.getRequestUserId();
+ Long userId = SmartRequestUtil.getUserId();
if (null == userId) {
return StringConst.EMPTY;
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java
index 66da1df0..ea17fd75 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java
@@ -9,7 +9,6 @@ import net.lab1024.sa.common.common.exception.BusinessException;
import org.springframework.beans.TypeMismatchException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.converter.HttpMessageNotReadableException;
-import org.springframework.security.access.AccessDeniedException;
import org.springframework.validation.BindException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
@@ -77,15 +76,6 @@ public class GlobalExceptionHandler {
return ResponseDTO.error(UserErrorCode.PARAM_ERROR);
}
- /**
- * 权限异常
- */
- @ResponseBody
- @ExceptionHandler({AccessDeniedException.class})
- public ResponseDTO> permissionExceptionHandler(AccessDeniedException e) {
- return ResponseDTO.error(UserErrorCode.NO_PERMISSION);
- }
-
/**
* 业务异常
*/
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerService.java
index 2968ed5a..aa05bbc9 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerService.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerService.java
@@ -157,7 +157,7 @@ public class DataTracerService {
* 保存数据变动记录
*/
public void addTrace(DataTracerForm tracerForm) {
- RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ RequestUser requestUser = SmartRequestUtil.getUser();
this.addTrace(tracerForm, requestUser);
}
@@ -182,7 +182,7 @@ public class DataTracerService {
* 批量保存数据变动记录
*/
public void addTraceList(List tracerFormList) {
- RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ RequestUser requestUser = SmartRequestUtil.getUser();
this.addTraceList(tracerFormList, requestUser);
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/controller/FeedbackController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/controller/FeedbackController.java
index b9a1cd09..a3242326 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/controller/FeedbackController.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/controller/FeedbackController.java
@@ -13,7 +13,6 @@ import net.lab1024.sa.common.module.support.feedback.domain.FeedbackAddForm;
import net.lab1024.sa.common.module.support.feedback.domain.FeedbackQueryForm;
import net.lab1024.sa.common.module.support.feedback.domain.FeedbackVO;
import net.lab1024.sa.common.module.support.feedback.service.FeedbackService;
-import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -47,7 +46,7 @@ public class FeedbackController extends SupportBaseController {
@ApiOperation("意见反馈-新增 @author 开云")
@PostMapping("/feedback/add")
public ResponseDTO add(@RequestBody @Valid FeedbackAddForm addForm) {
- RequestUser employee = SmartRequestUtil.getRequestUser();
+ RequestUser employee = SmartRequestUtil.getUser();
return feedbackService.add(addForm, employee);
}
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/controller/FileController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/controller/FileController.java
index 04dc3f10..4734bfa4 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/controller/FileController.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/controller/FileController.java
@@ -5,17 +5,13 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.sa.common.common.constant.RequestHeaderConst;
import net.lab1024.sa.common.common.controller.SupportBaseController;
-import net.lab1024.sa.common.common.domain.PageResult;
import net.lab1024.sa.common.common.domain.RequestUser;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.common.util.SmartRequestUtil;
import net.lab1024.sa.common.constant.SwaggerTagConst;
-import net.lab1024.sa.common.module.support.file.domain.form.FileQueryForm;
+import net.lab1024.sa.common.module.support.file.constant.FileFolderTypeEnum;
import net.lab1024.sa.common.module.support.file.domain.form.FileUrlUploadForm;
import net.lab1024.sa.common.module.support.file.domain.vo.FileUploadVO;
-import net.lab1024.sa.common.module.support.file.domain.vo.FileVO;
-import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit;
-import net.lab1024.sa.common.module.support.file.constant.FileFolderTypeEnum;
import net.lab1024.sa.common.module.support.file.service.FileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@@ -46,14 +42,14 @@ public class FileController extends SupportBaseController {
@PostMapping("/file/upload")
public ResponseDTO upload(@RequestParam MultipartFile file,
@RequestParam Integer folder) {
- RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ RequestUser requestUser = SmartRequestUtil.getUser();
return fileService.fileUpload(file, folder, requestUser);
}
@ApiOperation(value = "文件上传,通过url上传 @author 胡克", notes = FileFolderTypeEnum.INFO)
@PostMapping("/file/upload/url")
public ResponseDTO uploadByUrl(@RequestBody @Valid FileUrlUploadForm uploadForm) {
- RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ RequestUser requestUser = SmartRequestUtil.getUser();
return fileService.fileUpload(uploadForm,requestUser);
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/controller/HelpDocController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/controller/HelpDocController.java
index cd3eb398..005320e2 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/controller/HelpDocController.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/controller/HelpDocController.java
@@ -56,7 +56,7 @@ public class HelpDocController extends SupportBaseController {
@RepeatSubmit
public ResponseDTO view(@PathVariable Long helpDocId, HttpServletRequest request) {
return helpDocUserService.view(
- SmartRequestUtil.getRequestUser(),
+ SmartRequestUtil.getUser(),
helpDocId);
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogAspect.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogAspect.java
index 3d9da663..75ef250d 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogAspect.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogAspect.java
@@ -179,7 +179,7 @@ public abstract class OperateLogAspect {
return;
}
//设置用户信息
- RequestUser user = SmartRequestUtil.getRequestUser();
+ RequestUser user = SmartRequestUtil.getUser();
if (user == null) {
return;
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnController.java
index fd657e09..0c5ca017 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnController.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnController.java
@@ -33,19 +33,19 @@ public class TableColumnController extends SupportBaseController {
@PostMapping("/tableColumn/update")
@RepeatSubmit
public ResponseDTO updateTableColumn(@RequestBody @Valid TableColumnUpdateForm updateForm) {
- return tableColumnService.updateTableColumns(SmartRequestUtil.getRequestUser(), updateForm);
+ return tableColumnService.updateTableColumns(SmartRequestUtil.getUser(), updateForm);
}
@ApiOperation("恢复默认(删除) @author 卓大")
@GetMapping("/tableColumn/delete/{tableId}")
@RepeatSubmit
public ResponseDTO deleteTableColumn(@PathVariable Integer tableId) {
- return tableColumnService.deleteTableColumn(SmartRequestUtil.getRequestUser(), tableId);
+ return tableColumnService.deleteTableColumn(SmartRequestUtil.getUser(), tableId);
}
@ApiOperation("查询表格列 @author 卓大")
@GetMapping("/tableColumn/getColumns/{tableId}")
public ResponseDTO getColumns(@PathVariable Integer tableId) {
- return ResponseDTO.ok(tableColumnService.getTableColumns(SmartRequestUtil.getRequestUser(), tableId));
+ return ResponseDTO.ok(tableColumnService.getTableColumns(SmartRequestUtil.getUser(), tableId));
}
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/LoginDeviceEnum.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/LoginDeviceEnum.java
index 3fa94198..5baa2afa 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/LoginDeviceEnum.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/LoginDeviceEnum.java
@@ -1,5 +1,7 @@
package net.lab1024.sa.common.module.support.token;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
import net.lab1024.sa.common.common.enumeration.BaseEnum;
/**
@@ -11,6 +13,8 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum;
* @Email lab1024@163.com
* @Copyright 1024创新实验室 ( https://1024lab.net )
*/
+@Getter
+@AllArgsConstructor
public enum LoginDeviceEnum implements BaseEnum {
PC(1, "电脑端"),
@@ -21,23 +25,9 @@ public enum LoginDeviceEnum implements BaseEnum {
H5(4, "H5"),
- WEIXIN_MP(5, "微信小程序");
+ WX_MP(5, "微信小程序");
- LoginDeviceEnum(Integer value, String desc) {
- this.value = value;
- this.desc = desc;
- }
+ private final Integer value;
- private Integer value;
- private String desc;
-
- @Override
- public Integer getValue() {
- return value;
- }
-
- @Override
- public String getDesc() {
- return desc;
- }
+ private final String desc;
}
diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java
index e3af8649..13daa2f9 100644
--- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java
+++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java
@@ -1,21 +1,11 @@
package net.lab1024.sa.common.module.support.token;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.JwtBuilder;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-import lombok.extern.slf4j.Slf4j;
+import cn.dev33.satoken.stp.SaLoginModel;
+import cn.dev33.satoken.stp.StpUtil;
import net.lab1024.sa.common.common.enumeration.UserTypeEnum;
-import net.lab1024.sa.common.constant.RedisKeyConst;
-import net.lab1024.sa.common.module.support.redis.RedisService;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
-import java.util.Date;
-import java.util.Map;
+import java.util.List;
/**
* 与用户token的相关的服务
@@ -27,194 +17,59 @@ import java.util.Map;
* @Copyright 1024创新实验室 ( https://1024lab.net )
*/
@Component
-@Slf4j
public class TokenService {
- private static final long HOUR_TIME_MILLI = 60 * 60 * 1000;
- @Value("${token.key}")
- private String tokenKey;
+ private static final String EXTRA_KEY_USER_NAME = "userName";
- @Value("${token.expire-day}")
- private Integer tokenExpire;
-
- @Autowired
- private RedisService redisService;
+ private static final String EXTRA_KEY_USER_TYPE = "userType";
/**
- * 生成Token,并存入redis
+ * 生成Token
*
* @param userId
* @param userName
* @param userTypeEnum
* @param loginDeviceEnum
- * @param superPasswordFlag 特殊万能密码标识
* @return
*/
- public String generateToken(Long userId, String userName, UserTypeEnum userTypeEnum, LoginDeviceEnum loginDeviceEnum, Boolean superPasswordFlag) {
- long nowTimeMilli = System.currentTimeMillis();
- Claims jwtClaims = Jwts.claims();
- jwtClaims.put(JwtConst.CLAIM_ID_KEY, userId);
- jwtClaims.put(JwtConst.CLAIM_NAME_KEY, userName);
- jwtClaims.put(JwtConst.CLAIM_USER_TYPE_KEY, userTypeEnum.getValue());
- jwtClaims.put(JwtConst.CLAIM_DEVICE_KEY, loginDeviceEnum.getValue());
- jwtClaims.put(JwtConst.CLAIM_SUPER_PASSWORD_FLAG, superPasswordFlag);
- JwtBuilder jwtBuilder = Jwts.builder()
- .setClaims(jwtClaims)
- .setIssuedAt(new Date(nowTimeMilli))
- .signWith(SignatureAlgorithm.HS512, tokenKey);
+ public String generateToken(Long userId,
+ String userName,
+ UserTypeEnum userTypeEnum,
+ LoginDeviceEnum loginDeviceEnum) {
- // 如果是万能密码,则不需要记录到redis中;万能密码最多半个小时有效期
- if (superPasswordFlag) {
- jwtBuilder.setExpiration(new Date(nowTimeMilli + (HOUR_TIME_MILLI / 2)));
- return jwtBuilder.compact();
- }
+ /**
+ * 设置登录模式参数
+ * 具体参数 @see SaLoginModel 属性
+ * 已经写的挺清楚的了
+ */
+ SaLoginModel loginModel = new SaLoginModel();
+ // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型
+ loginModel.setDevice(String.valueOf(loginDeviceEnum.getDesc()));
+ // 扩展参数
+ loginModel.setExtra(EXTRA_KEY_USER_NAME, userName);
+ loginModel.setExtra(EXTRA_KEY_USER_TYPE, userTypeEnum.getValue());
- jwtBuilder.setExpiration(new Date(nowTimeMilli + tokenExpire * 24 * HOUR_TIME_MILLI));
- String token = jwtBuilder.compact();
- String redisKey = this.generateTokenRedisKey(userId, userTypeEnum.getValue(), loginDeviceEnum.getValue());
- redisService.set(redisKey, token, tokenExpire * 24 * 3600);
- return token;
+ String loginId = generateLoginId(userId, userTypeEnum);
+ StpUtil.login(loginId, loginModel);
+ return StpUtil.getTokenValue();
+ }
+
+ public static String generateLoginId(Long userId, UserTypeEnum userType) {
+ return userType.getValue() + "_" + userId;
}
/**
- * 生成登录信息: 含设备信息
- *
- * @param userId
- * @param device
- * @return
+ * 退出登录 注销
*/
- private String generateTokenRedisKey(Long userId, Integer userType, Integer device) {
- String userKey = userType + "_" + userId + "_" + device;
- return redisService.generateRedisKey(RedisKeyConst.Support.TOKEN, userKey);
+ public void removeToken() {
+ StpUtil.logout();
}
-
- /**
- * 强制移除 此用户各端的登录信息
- *
- * @param token
- */
- public void removeToken(String token) {
- Map tokenData = this.decryptTokenData(token);
- if (MapUtils.isEmpty(tokenData)) {
- return;
- }
-
- //特殊账号
- if (tokenData.get(JwtConst.CLAIM_SUPER_PASSWORD_FLAG) != null) {
- try {
- Boolean superPasswordFlag = Boolean.valueOf(tokenData.get(JwtConst.CLAIM_SUPER_PASSWORD_FLAG).toString());
- if (superPasswordFlag) {
- return;
- }
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- return;
- }
- }
-
- boolean isValid = this.checkRedisToken(tokenData, token);
- if (!isValid) {
- return;
- }
-
- Long userId = Long.valueOf(tokenData.get(JwtConst.CLAIM_ID_KEY).toString());
- Integer userType = Integer.valueOf(tokenData.get(JwtConst.CLAIM_USER_TYPE_KEY).toString());
- Integer device = Integer.valueOf(tokenData.get(JwtConst.CLAIM_DEVICE_KEY).toString());
-
- String redisKey = this.generateTokenRedisKey(userId, userType, device);
- redisService.delete(redisKey);
+ public void removeToken(Long userId, UserTypeEnum userType) {
+ StpUtil.logout(generateLoginId(userId, userType));
}
- /**
- * 解析并校验token信息 获取 userId
- *
- * @param token
- * @return
- */
- public Long getUserIdAndValidateToken(String token) {
- Map parseJwtData = this.decryptTokenData(token);
- boolean isValid = this.checkRedisToken(parseJwtData, token);
- if (!isValid) {
- return null;
- }
- Long userId = Long.valueOf(parseJwtData.get(JwtConst.CLAIM_ID_KEY).toString());
- return userId;
- }
-
- /**
- * 解密和解析token
- *
- * @param token
- * @return
- */
- private Map decryptTokenData(String token) {
- try {
- return Jwts.parser()
- .setSigningKey(tokenKey)
- .parseClaimsJws(token)
- .getBody();
- } catch (Exception e) {
- }
- return null;
- }
-
- /**
- * 校验token是否有效
- *
- * @param token
- * @return
- */
- private boolean checkRedisToken(Map parseJwtData, String token) {
- if (MapUtils.isEmpty(parseJwtData)) {
- return false;
- }
- //特殊账号
- if (parseJwtData.get(JwtConst.CLAIM_SUPER_PASSWORD_FLAG) != null) {
- try {
- Boolean superPasswordFlag = Boolean.valueOf(parseJwtData.get(JwtConst.CLAIM_SUPER_PASSWORD_FLAG).toString());
- if (superPasswordFlag) {
- return true;
- }
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- return false;
- }
- }
-
- Long userId = null;
- Integer userType = null, device = null;
-
- if (null != parseJwtData.get(JwtConst.CLAIM_ID_KEY)) {
- userId = NumberUtils.toLong(parseJwtData.get(JwtConst.CLAIM_ID_KEY).toString(), -1);
- userId = userId == -1 ? null : userId;
- }
-
- if (null != parseJwtData.get(JwtConst.CLAIM_USER_TYPE_KEY)) {
- userType = NumberUtils.toInt(parseJwtData.get(JwtConst.CLAIM_USER_TYPE_KEY).toString(), -1);
- userType = userType == -1 ? null : userType;
- }
-
- if (null != parseJwtData.get(JwtConst.CLAIM_DEVICE_KEY)) {
- device = NumberUtils.toInt(parseJwtData.get(JwtConst.CLAIM_DEVICE_KEY).toString(), -1);
- device = device == -1 ? null : device;
- }
-
- if (userId == null || userType == null || device == null) {
- return false;
- }
-
- String redisKey = this.generateTokenRedisKey(userId, userType, device);
- String redisToken = redisService.get(redisKey);
- return token.equals(redisToken);
- }
-
- /**
- * 批量移除用户所有设备的token
- */
- public void batchRemoveRedisToken(Long userId, UserTypeEnum userTypeEnum) {
- for (LoginDeviceEnum device : LoginDeviceEnum.values()) {
- redisService.delete(this.generateTokenRedisKey(userId, userTypeEnum.getValue(), device.getValue()));
- }
+ public void removeToken(List userIdList, UserTypeEnum userType) {
+ userIdList.forEach(id -> StpUtil.logout(generateLoginId(id, userType)));
}
}
\ No newline at end of file
diff --git a/smart-admin-api/sa-common/src/main/resources/dev/sa-common.yaml b/smart-admin-api/sa-common/src/main/resources/dev/sa-common.yaml
index b6b25c9d..73a3c270 100644
--- a/smart-admin-api/sa-common/src/main/resources/dev/sa-common.yaml
+++ b/smart-admin-api/sa-common/src/main/resources/dev/sa-common.yaml
@@ -3,7 +3,7 @@ spring:
datasource:
url: jdbc:p6spy:mysql://127.0.0.1:3306/smart_admin_v2?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
- password: Zhuoda1024lab
+ password: 123456
initial-size: 2
min-idle: 2
max-active: 10
@@ -27,17 +27,17 @@ spring:
# redis 连接池配置信息
redis:
- database: 1
+ database: 12
host: 127.0.0.1
lettuce:
pool:
- max-active: 5
+ max-active: 50
min-idle: 1
max-idle: 3
max-wait: 30000ms
port: 6379
- timeout: 10000ms
- password:
+ timeout: 10s
+ password: 123456
# 上传文件大小配置
servlet:
@@ -109,11 +109,6 @@ http:
write-timeout: 50000
keep-alive: 300000
-# token相关配置
-token:
- key: sa-jwt-key
- expire-day: 7
-
# 跨域配置
access-control-allow-origin: '*'
@@ -123,4 +118,23 @@ heart-beat:
# 热加载配置
reload:
- interval-seconds: 300
\ No newline at end of file
+ interval-seconds: 300
+
+############## Sa-Token 配置 (文档: https://sa-token.cc) ##############
+sa-token:
+ # token 名称(同时也是 cookie 名称)
+ token-name: x-access-token
+ # token 前缀
+ token-prefix:
+ # token 有效期(单位:秒) 默认30天,-1 代表永久有效
+ timeout: 2592000
+ # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
+ active-timeout: 28800
+ # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
+ is-concurrent: false
+ # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
+ is-share: false
+ # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
+ token-style: simple-uuid
+ # 是否输出操作日志
+ is-log: true
\ No newline at end of file