Kaynağa Gözat

添加认证接口

bihuisong 1 yıl önce
ebeveyn
işleme
3cfef4547a

+ 38 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysSecretProjectController.java

@@ -1,10 +1,21 @@
 package com.ruoyi.web.controller.system;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import cn.hutool.json.JSONObject;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.domain.SysProject;
 import com.ruoyi.system.domain.dto.SysSecretProjectDTO;
+import com.ruoyi.system.mapper.SysProjectMapper;
+import com.ruoyi.system.mapper.SysSecretProjectMapper;
+import com.ruoyi.system.service.ISysProjectService;
 import com.ruoyi.web.utils.ClipboardUtil;
 import com.ruoyi.web.utils.JWTExample;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +46,8 @@ import com.ruoyi.common.core.page.TableDataInfo;
 public class SysSecretProjectController extends BaseController {
     @Autowired
     private ISysSecretProjectService sysSecretProjectService;
+    @Autowired
+    private SysSecretProjectMapper sysSecretProjectMapper;
 
     /**
      * 查询项目授权管理列表
@@ -61,7 +74,7 @@ public class SysSecretProjectController extends BaseController {
     @PostMapping
     public AjaxResult add(@RequestBody SysSecretProjectDTO sysSecretProjectDTO) {
         long milliseconds = Duration.between(LocalDateTime.now(), sysSecretProjectDTO.getOverdueDate().atStartOfDay()).toMillis();
-        String jwt = JWTExample.createJWT(sysSecretProjectDTO.getProjectName(),milliseconds);
+        String jwt = JWTExample.createJWT(sysSecretProjectDTO.getProjectName(), milliseconds);
         sysSecretProjectDTO.setSecretKey(jwt);
         return toAjax(sysSecretProjectService.insertSysSecretProject(sysSecretProjectDTO));
     }
@@ -73,7 +86,7 @@ public class SysSecretProjectController extends BaseController {
     @PutMapping
     public AjaxResult edit(@RequestBody SysSecretProjectDTO sysSecretProjectDTO) {
         long milliseconds = Duration.between(LocalDateTime.now(), sysSecretProjectDTO.getOverdueDate().atStartOfDay()).toMillis();
-        String jwt = JWTExample.createJWT(sysSecretProjectDTO.getProjectName(),milliseconds);
+        String jwt = JWTExample.createJWT(sysSecretProjectDTO.getProjectName(), milliseconds);
         sysSecretProjectDTO.setSecretKey(jwt);
         return toAjax(sysSecretProjectService.updateSysSecretProject(sysSecretProjectDTO));
     }
@@ -98,4 +111,27 @@ public class SysSecretProjectController extends BaseController {
     }
 
 
+    @PostMapping("/authority")
+    public R authority(@RequestBody JSONObject json) throws ParseException {
+        Map map = new HashMap<>();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        // 验证和解析JWT
+        String secretKey = json.get("secretKey").toString();
+        // TODO: 2023/11/23 解密 secretKey
+        if (JWTExample.validateJWT(secretKey)) {
+            String str = JWTExample.parseJWT(json.get("secretKey").toString());
+            SysSecretProject sysSecretProject = sysSecretProjectMapper.selectBaseBySecretKey(secretKey);
+            Date now = new Date();
+            Date date = dateFormat.parse(sysSecretProject.getOverdueDate().toString());
+            long seconds = (date.getTime() - now.getTime()) / 1000;
+            map.put("overdueDate", seconds);
+            map.put("isOverdue", true);
+//            System.out.println("解析到的项目名称:" + str);
+        } else {
+            map.put("isOverdue", false);
+            System.out.println("JWT验证失败");
+        }
+        return R.ok(map);
+    }
+
 }

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -111,7 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/register", "/captchaImage").permitAll()
+                .antMatchers("/login", "/register", "/captchaImage","/system/secret/authority").permitAll()
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

+ 3 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysSecretProjectMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.ruoyi.system.domain.SysSecretProject;
 import com.ruoyi.system.domain.dto.SysSecretProjectDTO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 【请填写功能名称】Mapper接口
@@ -61,4 +62,6 @@ public interface SysSecretProjectMapper {
     public int deleteSysSecretProjectByIds(Long[] ids);
 
     public int selectCountByProjectId(Long[] ids);
+
+    SysSecretProject selectBaseBySecretKey(@Param("secretKey") String secretKey);
 }

+ 32 - 23
ruoyi-system/src/main/resources/mapper/system/SysSecretProjectMapper.xml

@@ -1,29 +1,30 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.system.mapper.SysSecretProjectMapper">
-    
+
     <resultMap type="SysSecretProject" id="SysSecretProjectResult">
-        <result property="id"    column="id"    />
-        <result property="projectId"    column="project_id"    />
-        <result property="overdueDate"    column="overdue_date"    />
-        <result property="status"    column="status"    />
-        <result property="secretKey"    column="secret_key"    />
+        <result property="id" column="id"/>
+        <result property="projectId" column="project_id"/>
+        <result property="overdueDate" column="overdue_date"/>
+        <result property="status" column="status"/>
+        <result property="secretKey" column="secret_key"/>
     </resultMap>
 
     <resultMap type="SysSecretProjectDTO" id="getSysSecretProjectList">
-        <result property="id"    column="id"    />
-        <result property="projectId"    column="project_id"    />
-        <result property="projectName"    column="project_name"    />
-        <result property="overdueDate"    column="overdue_date"    />
-        <result property="status"    column="status"    />
-        <result property="secretKey"    column="secret_key"    />
-        <result property="statusText"    column="statusText"    />
+        <result property="id" column="id"/>
+        <result property="projectId" column="project_id"/>
+        <result property="projectName" column="project_name"/>
+        <result property="overdueDate" column="overdue_date"/>
+        <result property="status" column="status"/>
+        <result property="secretKey" column="secret_key"/>
+        <result property="statusText" column="statusText"/>
     </resultMap>
 
     <sql id="selectSysSecretProjectVo">
-        select id, project_id,overdue_date,status, secret_key from sys_secret_project
+        select id, project_id, overdue_date, status, secret_key
+        from sys_secret_project
     </sql>
 
     <select id="selectSysSecretProjectList" resultMap="getSysSecretProjectList">
@@ -44,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="secretKey != null  and secretKey != ''">and secret_key = #{secretKey}</if>
         </where>
     </select>
-    
+
     <select id="selectSysSecretProjectById" parameterType="Long" resultMap="getSysSecretProjectList">
         select ssp.id,
                ssp.project_id,
@@ -61,7 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                  left join sys_project sp on ssp.project_id = sp.id
         where ssp.id = #{id}
     </select>
-        
+
     <insert id="insertSysSecretProject" parameterType="SysSecretProject" useGeneratedKeys="true" keyProperty="id">
         insert into sys_secret_project
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -69,13 +70,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="secretKey != null">secret_key,</if>
             <if test="status != null">status,</if>
             <if test="overdueDate != null">overdue_date,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="projectId != null">#{projectId},</if>
             <if test="secretKey != null">#{secretKey},</if>
             <if test="status != null">#{status},</if>
             <if test="overdueDate != null">#{overdueDate},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateSysSecretProject" parameterType="SysSecretProject">
@@ -90,19 +91,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteSysSecretProjectById" parameterType="Long">
-        delete from sys_secret_project where id = #{id}
+        delete
+        from sys_secret_project
+        where id = #{id}
     </delete>
 
     <delete id="deleteSysSecretProjectByIds" parameterType="String">
-        delete from sys_secret_project where id in 
+        delete from sys_secret_project where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
+
     <select id="selectCountByProjectId" resultType="java.lang.Integer">
-        select count(1) from sys_secret_project  where project_id in
+        select count(1) from sys_secret_project where project_id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </select>
+
+    <select id="selectBaseBySecretKey" resultMap="SysSecretProjectResult">
+        <include refid="selectSysSecretProjectVo"/>
+        where secret_key = #{secretKey}
+    </select>
 </mapper>