Parcourir la source

登录模块修改

chenminghua il y a 4 ans
Parent
commit
ce4d876a08

+ 10 - 6
src/main/java/com/gyee/frame/aspect/VerificationAspect.java

@@ -7,6 +7,7 @@ import com.gyee.frame.model.ticket.TokenUser;
 import com.gyee.frame.service.ticket.IbsusersService;
 import com.gyee.frame.service.ticket.LaborService;
 import com.gyee.frame.service.ticket.ShiroService;
+import com.gyee.frame.util.MD5Util;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
@@ -42,9 +43,6 @@ public class VerificationAspect {
         String url = request.getRequestURI();
         String token = request.getHeader("token");
         if (url != null && url.contains("sys/login")) {
-            /**
-             * 登录更新token
-             */
             TokenUser user = shiroService.findToken(token);
             /**
              * user == null 表示第一次登录
@@ -52,12 +50,18 @@ public class VerificationAspect {
             if (user == null)
                 return;
 
-            Ibsusers users = ibsusersService.findUser(user.getLaborNum(), user.getPassword());
             /**
-             *  如果users == null 表示之前的登录信息和现有的登录信息不一致
+             * 再次登入时验证登录信息
+             */
+            String username = request.getParameter("username");
+            String password = request.getParameter("password");
+            Ibsusers users = ibsusersService.findUser(username);
+            /**
+             *  如果users == null || password不相等 表示之前的登录信息和现有的登录信息不一致
              */
-            if (users == null)
+            if (users == null || !users.getPassword().equals(MD5Util.encode(password))){
                 throw new TicketException("请登录后使用");
+            }
         } else {
             TokenUser user = shiroService.findToken(token);
             if (user == null)

+ 12 - 5
src/main/java/com/gyee/frame/controller/ticket/LoginController.java

@@ -3,11 +3,11 @@ package com.gyee.frame.controller.ticket;
 import com.gyee.frame.common.dataSources.DataSource;
 import com.gyee.frame.common.dataSources.DataSourceType;
 import com.gyee.frame.common.domain.AjaxResult;
-import com.gyee.frame.model.ticket.Ibsusers;
 import com.gyee.frame.model.ticket.Labor;
 import com.gyee.frame.service.ticket.IbsusersService;
 import com.gyee.frame.service.ticket.LaborService;
 import com.gyee.frame.service.ticket.ShiroService;
+import com.gyee.frame.util.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -23,19 +23,26 @@ public class LoginController {
     @Autowired
     ShiroService shiroService;
 
+    /**
+     * 登录入口
+     * @param username
+     * @param password
+     * @return
+     */
     @DataSource(value = DataSourceType.TICKET)
     @PostMapping(value = "sys/login")
-    public AjaxResult login(@RequestParam("username") String username, @RequestParam("password") String password){
+    public AjaxResult login(@RequestParam("username") String username,
+                            @RequestParam("password") String password){
         Labor labor = laborService.getLabor(username, password);
-        Ibsusers user = ibsusersService.findUser(username, password);
-        if (labor == null || user == null)
+        if (labor == null)
             return AjaxResult.error(4004, "用户名或密码错误");
 
-        Map<String, Object> token = shiroService.createToken(labor);
+        Map<String, Object> token = shiroService.createToken(labor, password);
 
         return AjaxResult.successData(token);
     }
 
+
     @PostMapping(value = "sys/logout")
     public AjaxResult logout(@RequestHeader("token")String token){
         shiroService.logout(token);

+ 1 - 3
src/main/java/com/gyee/frame/service/impl/ticket/IbsusersServiceImpl.java

@@ -20,11 +20,9 @@ import org.springframework.stereotype.Service;
 public class IbsusersServiceImpl extends ServiceImpl<IbsusersMapper, Ibsusers> implements IbsusersService {
 
     @Override
-    public Ibsusers findUser(String username, String password) {
-        password = MD5Util.encode(password);
+    public Ibsusers findUser(String username) {
         QueryWrapper<Ibsusers> wrapper = new QueryWrapper<>();
         wrapper.eq("LABORNUM", username);
-        wrapper.eq("PASSWORD", password);
 
         return baseMapper.selectOne(wrapper);
     }

+ 1 - 1
src/main/java/com/gyee/frame/service/impl/ticket/LaborServiceImpl.java

@@ -50,7 +50,7 @@ public class LaborServiceImpl extends ServiceImpl<LaborMapper, Labor> implements
     public List<Labor> getLabors(String dept) {
         QueryWrapper<Labor> wrapper = new QueryWrapper<>();
         if (TicketUtil.allDept().contains(dept)){
-            wrapper.eq("DEPTNUM", dept);
+            wrapper.in("DEPTNUM", dept, "公司领导","安全监察部");
         }
 
         List<Labor> labors = baseMapper.selectList(wrapper);

+ 1 - 1
src/main/java/com/gyee/frame/service/ticket/IbsusersService.java

@@ -19,6 +19,6 @@ public interface IbsusersService extends IService<Ibsusers> {
      * @param username
      * @return
      */
-    Ibsusers findUser(String username, String password);
+    Ibsusers findUser(String username);
 
 }

+ 6 - 28
src/main/java/com/gyee/frame/service/ticket/ShiroService.java

@@ -22,13 +22,13 @@ public class ShiroService {
     //10天后过期
     public final long EXPIRE = 10 * 24 * 60 * 60;
 
-    public Map<String, Object> createToken(Labor labor){
+    public Map<String, Object> createToken(Labor labor, String secret){
         Map<String, Object> result = new HashMap<>();
         if (labor == null)
             return result;
 
         //生成一个token id
-        String tokenId = TokenGenerator.generateValue();
+        String token = TokenGenerator.generateValue();
         //当前时间
         Date now = new Date();
         //过期时间
@@ -37,13 +37,14 @@ public class ShiroService {
         TokenUser user = new TokenUser();
         user.setLaborNum(labor.getLabornum());
         user.setLaborName(labor.getLaborname());
+        user.setPassword(secret);
         user.setDepartment(labor.getDeptnum());
         user.setExpireTime(expireTime);
 
         // 保存并更新token
-        tokenCache.saveToken(tokenId, user);
+        tokenCache.saveToken(token, user);
 
-        result.put("token", tokenId);
+        result.put("token", token);
         result.put("user", user);
 
         return result;
@@ -54,29 +55,6 @@ public class ShiroService {
     }
 
     public TokenUser findToken(String token) {
-        return tokenCache.findToken(token);
-    }
-
-    public Map<String, Object> updateToken(String tokenId, TokenUser token){
-        Map<String, Object> result = new HashMap<>();
-
-        //当前时间
-        Date now = new Date();
-        //过期时间
-        long expireTime = now.getTime() + EXPIRE * 1000;
-
-        TokenUser user = new TokenUser();
-        user.setLaborNum(token.getLaborNum());
-        user.setLaborName(token.getLaborName());
-        user.setDepartment(token.getDepartment());
-        user.setExpireTime(expireTime);
-
-        // 保存并更新token
-        tokenCache.saveToken(tokenId, user);
-
-        result.put("token", tokenId);
-        result.put("user", user);
-
-        return result;
+        return tokenCache.findUserByToken(token);
     }
 }

+ 11 - 11
src/main/java/com/gyee/frame/util/ticket/TokenCache.java

@@ -19,28 +19,28 @@ public class TokenCache {
         return data;
     }
 
-    public boolean saveToken(String tokenId, TokenUser token) {
-        if (tokenMap.containsKey(tokenId)){
+    public boolean saveToken(String token, TokenUser user) {
+        if (tokenMap.containsKey(token)){
             return false;
         }
-        tokenMap.put(tokenId, token);
+        tokenMap.put(token, user);
 
         return  true;
     }
 
-    public boolean removeToken(String tokenId){
-       if (tokenMap.containsKey(tokenId)){
-           tokenMap.remove(tokenId);
+    public boolean removeToken(String token){
+       if (tokenMap.containsKey(token)){
+           tokenMap.remove(token);
            return true;
        }
        return false;
     }
 
-    public TokenUser findToken(String tokenId){
-        TokenUser token = null;
-        if (tokenMap.containsKey(tokenId))
-            token = tokenMap.get(tokenId);
+    public TokenUser findUserByToken(String token){
+        TokenUser user = null;
+        if (tokenMap.containsKey(token))
+            user = tokenMap.get(token);
 
-        return token;
+        return user;
     }
 }