Procházet zdrojové kódy

简易登录模式

gaodm před 5 roky
rodič
revize
3f305c8142

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -38,6 +38,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .authorizeRequests()
                 .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
                 .antMatchers("/sys/user/getJwt").permitAll()
+                .antMatchers("/sys/user/getJwtNoPass").permitAll()
                 .antMatchers("/sys/user/refreshJwt").permitAll()
                 .antMatchers("/sys/user/checkToken").permitAll()
                 .antMatchers("/sys/dictionaryInfo/getDictionary").permitAll()

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -81,6 +81,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/actuator/**", request)
                 || matchers("/hystrix/**", request)
                 || matchers("/sys/user/getJwt", request)
+                || matchers("/sys/user/getJwtNoPass", request)
                 || matchers("/sys/user/refreshJwt", request)
                 || matchers("/sys/dictionaryInfo/getDictionary", request)
                 || matchers("/sys/user/checkToken", request)

+ 31 - 0
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -139,6 +139,37 @@ public class SysUserFacade extends SysUserServiceImpl {
         return data;
     }
 
+    /**
+     * 外部获取jwt
+     *
+     * @param username 用户名
+     * @return jwt
+     */
+    public JwtDTO getJwtNoPass(String username) {
+        JwtDTO data = new JwtDTO();
+        if (StringUtil.isBlank(username)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                    "请输入用户名");
+        }
+        QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
+        userQueryWrapper.eq("username", username)
+                .eq("status", StatusEnum.Enable.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        SysUser user = this.getOne(userQueryWrapper, false);
+        if (null == user) {
+            throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
+        }
+        JwtStore jwt = tokenFacade.getToken(user.getId().toString());
+        if (null == jwt) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "Token不存在,请重新登录");
+        }
+        data.setAccessToken(jwt.getAccessToken());
+        data.setRefreshToken(jwt.getRefreshToken());
+        data.setType(user.getType());
+        data.setTypeCn(ConstantEnum.getName(user.getType()));//返回中文
+        return data;
+    }
+
     /**
      * 刷新jwt
      *

+ 8 - 0
src/main/java/com/diagbot/service/SysTokenService.java

@@ -43,4 +43,12 @@ public interface SysTokenService {
      * @return 删除是否成功
      */
     Boolean deleteBatchToken(List<Long> userIds);
+
+    /**
+     * 获取用户jwt
+     *
+     * @param userId 用户ID
+     * @return jwt信息
+     */
+    JwtStore getToken(String userId);
 }

+ 24 - 0
src/main/java/com/diagbot/service/impl/SysTokenServiceImpl.java

@@ -169,4 +169,28 @@ public class SysTokenServiceImpl implements SysTokenService {
         });
         return l > 0;
     }
+
+    /**
+     * 获取用户jwt
+     *
+     * @param userId 用户ID
+     * @return jwt信息
+     */
+    @Override
+    public JwtStore getToken(String userId) {
+        JwtStore tokenStore = null;
+        //从redis中取出
+        final byte[] redis_key = getUserTokenKey(userId);
+        tokenStore = (JwtStore) redisForToken.execute(new RedisCallback<JwtStore>() {
+            @Override
+            public JwtStore doInRedis(RedisConnection connection) throws DataAccessException {
+                byte[] bytes = connection.get(redis_key);
+                if (bytes == null) {
+                    return null;
+                }
+                return (JwtStore) deserializeValue(bytes);
+            }
+        });
+        return tokenStore;
+    }
 }

+ 20 - 0
src/main/java/com/diagbot/vo/UserLoginNoPassVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description: 登录参数
+ * @Author: ztg
+ * @Date: 2018/9/28 13:14
+ */
+@Getter
+@Setter
+public class UserLoginNoPassVO {
+
+    @NotBlank(message = "请输入用户名!")
+    private String username;
+
+}

+ 10 - 0
src/main/java/com/diagbot/web/SysUserController.java

@@ -17,6 +17,7 @@ import com.diagbot.vo.SysUserBaseVO;
 import com.diagbot.vo.SysUserDeptVO;
 import com.diagbot.vo.SysUserQueryVO;
 import com.diagbot.vo.SysUserRoleVO;
+import com.diagbot.vo.UserLoginNoPassVO;
 import com.diagbot.vo.UserLoginVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -68,6 +69,15 @@ public class SysUserController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "登录获取jwt[by:gaodm]",
+            notes = "username:用户名,必填<br>")
+    @PostMapping("/getJwtNoPass")
+    @SysLogger("getJwtNoPass")
+    public RespDTO<JwtDTO> getJwtNoPass(@RequestBody UserLoginNoPassVO userLoginNoPassVO) {
+        JwtDTO data = userFacade.getJwtNoPass(userLoginNoPassVO.getUsername());
+        return RespDTO.onSuc(data);
+    }
+
     @ApiOperation(value = "刷新jwt[by:gaodm]",
             notes = "refreshToken:刷新令牌,必填<br>")
     @PostMapping("/refreshJwt")