mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-04 10:57:10 +08:00 
			
		
		
		
	refactor: 优化 SaToken 及图形验证码配置
This commit is contained in:
		@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package top.charles7c.continew.admin.auth.config.satoken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.dev33.satoken.stp.StpInterface;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Sa-Token 配置
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Charles7c
 | 
				
			||||||
 | 
					 * @since 2022/12/19 22:13
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Configuration
 | 
				
			||||||
 | 
					public class SaTokenConfiguration {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Sa-Token 权限认证配置
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Bean
 | 
				
			||||||
 | 
					    public StpInterface stpInterface() {
 | 
				
			||||||
 | 
					        return new SaTokenPermissionImpl();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -16,35 +16,27 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package top.charles7c.continew.admin.auth.config.satoken;
 | 
					package top.charles7c.continew.admin.auth.config.satoken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import cn.dev33.satoken.stp.StpInterface;
 | 
					import cn.dev33.satoken.stp.StpInterface;
 | 
				
			||||||
 | 
					 | 
				
			||||||
import top.charles7c.continew.admin.common.model.dto.LoginUser;
 | 
					import top.charles7c.continew.admin.common.model.dto.LoginUser;
 | 
				
			||||||
import top.charles7c.continew.admin.common.util.helper.LoginHelper;
 | 
					import top.charles7c.continew.admin.common.util.helper.LoginHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Sa-Token 权限认证适配
 | 
					 * Sa-Token 权限认证实现
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @author Lion Li(<a href="https://gitee.com/dromara/RuoYi-Vue-Plus">RuoYi-Vue-Plus</a>)
 | 
					 | 
				
			||||||
 * @author Charles7c
 | 
					 * @author Charles7c
 | 
				
			||||||
 * @since 2023/3/1 22:28
 | 
					 * @since 2023/3/1 22:28
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class SaTokenPermissionImpl implements StpInterface {
 | 
					public class SaTokenPermissionImpl implements StpInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 获取菜单权限列表
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public List<String> getPermissionList(Object loginId, String loginType) {
 | 
					    public List<String> getPermissionList(Object loginId, String loginType) {
 | 
				
			||||||
        LoginUser loginUser = LoginHelper.getLoginUser();
 | 
					        LoginUser loginUser = LoginHelper.getLoginUser();
 | 
				
			||||||
        return new ArrayList<>(loginUser.getPermissions());
 | 
					        return new ArrayList<>(loginUser.getPermissions());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 获取角色权限列表
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public List<String> getRoleList(Object loginId, String loginType) {
 | 
					    public List<String> getRoleList(Object loginId, String loginType) {
 | 
				
			||||||
        LoginUser loginUser = LoginHelper.getLoginUser();
 | 
					        LoginUser loginUser = LoginHelper.getLoginUser();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,14 +47,13 @@ import top.charles7c.continew.admin.common.constant.CacheConstants;
 | 
				
			|||||||
import top.charles7c.continew.admin.common.constant.RegexConstants;
 | 
					import top.charles7c.continew.admin.common.constant.RegexConstants;
 | 
				
			||||||
import top.charles7c.continew.admin.common.model.resp.CaptchaResp;
 | 
					import top.charles7c.continew.admin.common.model.resp.CaptchaResp;
 | 
				
			||||||
import top.charles7c.continew.starter.cache.redisson.util.RedisUtils;
 | 
					import top.charles7c.continew.starter.cache.redisson.util.RedisUtils;
 | 
				
			||||||
import top.charles7c.continew.starter.captcha.graphic.autoconfigure.GraphicCaptchaProperties;
 | 
					 | 
				
			||||||
import top.charles7c.continew.starter.core.autoconfigure.project.ProjectProperties;
 | 
					import top.charles7c.continew.starter.core.autoconfigure.project.ProjectProperties;
 | 
				
			||||||
import top.charles7c.continew.starter.core.util.TemplateUtils;
 | 
					import top.charles7c.continew.starter.core.util.TemplateUtils;
 | 
				
			||||||
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
 | 
					import top.charles7c.continew.starter.core.util.validate.CheckUtils;
 | 
				
			||||||
import top.charles7c.continew.starter.core.util.validate.ValidationUtils;
 | 
					import top.charles7c.continew.starter.core.util.validate.ValidationUtils;
 | 
				
			||||||
import top.charles7c.continew.starter.web.model.R;
 | 
					 | 
				
			||||||
import top.charles7c.continew.starter.log.common.annotation.Log;
 | 
					import top.charles7c.continew.starter.log.common.annotation.Log;
 | 
				
			||||||
import top.charles7c.continew.starter.messaging.mail.util.MailUtils;
 | 
					import top.charles7c.continew.starter.messaging.mail.util.MailUtils;
 | 
				
			||||||
 | 
					import top.charles7c.continew.starter.web.model.R;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.time.Duration;
 | 
					import java.time.Duration;
 | 
				
			||||||
import java.util.LinkedHashMap;
 | 
					import java.util.LinkedHashMap;
 | 
				
			||||||
@@ -75,9 +74,9 @@ import java.util.Map;
 | 
				
			|||||||
public class CaptchaController {
 | 
					public class CaptchaController {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final CaptchaService captchaService;
 | 
					    private final CaptchaService captchaService;
 | 
				
			||||||
 | 
					    private final Captcha captcha;
 | 
				
			||||||
    private final ProjectProperties projectProperties;
 | 
					    private final ProjectProperties projectProperties;
 | 
				
			||||||
    private final CaptchaProperties captchaProperties;
 | 
					    private final CaptchaProperties captchaProperties;
 | 
				
			||||||
    private final GraphicCaptchaProperties graphicCaptchaProperties;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Log(ignore = true)
 | 
					    @Log(ignore = true)
 | 
				
			||||||
    @Operation(summary = "获取行为验证码", description = "获取行为验证码(Base64编码)")
 | 
					    @Operation(summary = "获取行为验证码", description = "获取行为验证码(Base64编码)")
 | 
				
			||||||
@@ -98,7 +97,6 @@ public class CaptchaController {
 | 
				
			|||||||
    @Operation(summary = "获取图片验证码", description = "获取图片验证码(Base64编码,带图片格式:data:image/gif;base64)")
 | 
					    @Operation(summary = "获取图片验证码", description = "获取图片验证码(Base64编码,带图片格式:data:image/gif;base64)")
 | 
				
			||||||
    @GetMapping("/img")
 | 
					    @GetMapping("/img")
 | 
				
			||||||
    public R<CaptchaResp> getImageCaptcha() {
 | 
					    public R<CaptchaResp> getImageCaptcha() {
 | 
				
			||||||
        Captcha captcha = graphicCaptchaProperties.getCaptcha();
 | 
					 | 
				
			||||||
        String uuid = IdUtil.fastUUID();
 | 
					        String uuid = IdUtil.fastUUID();
 | 
				
			||||||
        String captchaKey = CacheConstants.CAPTCHA_KEY_PREFIX + uuid;
 | 
					        String captchaKey = CacheConstants.CAPTCHA_KEY_PREFIX + uuid;
 | 
				
			||||||
        RedisUtils.set(captchaKey, captcha.text(), Duration.ofMinutes(captchaProperties.getExpirationInMinutes()));
 | 
					        RedisUtils.set(captchaKey, captcha.text(), Duration.ofMinutes(captchaProperties.getExpirationInMinutes()));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -123,8 +123,6 @@ sa-token:
 | 
				
			|||||||
  ## 扩展配置
 | 
					  ## 扩展配置
 | 
				
			||||||
  extension:
 | 
					  extension:
 | 
				
			||||||
    enabled: true
 | 
					    enabled: true
 | 
				
			||||||
    # 权限认证实现
 | 
					 | 
				
			||||||
    permission-impl: top.charles7c.continew.admin.auth.config.satoken.SaTokenPermissionImpl
 | 
					 | 
				
			||||||
    # 持久层配置
 | 
					    # 持久层配置
 | 
				
			||||||
    dao.type: REDIS
 | 
					    dao.type: REDIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user