Browse Source

鉴权相关

yingp 7 years ago
parent
commit
da0af8a000

+ 4 - 0
base-servers/account/account-server/pom.xml

@@ -21,6 +21,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>account-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>auth-client</artifactId>
+        </dependency>
         <!-- db -->
         <dependency>
             <groupId>mysql</groupId>

+ 2 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/AccountApplication.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.account;
 
+import com.usoftchina.saas.auth.client.EnableAuthClient;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -14,6 +15,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableEurekaClient
 @EnableTransactionManagement
 @MapperScan(basePackages = "com.usoftchina.saas.account.mapper")
+@EnableAuthClient
 public class AccountApplication {
     public static void main(String[] args) {
         SpringApplication.run(AccountApplication.class, args);

+ 18 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java

@@ -1,6 +1,5 @@
 package com.usoftchina.saas.account.controller;
 
-import com.usoftchina.saas.account.cache.AccountCache;
 import com.usoftchina.saas.account.dto.AccountDTO;
 import com.usoftchina.saas.account.dto.AccountRegDTO;
 import com.usoftchina.saas.account.dto.CompanyBaseDTO;
@@ -11,6 +10,7 @@ import com.usoftchina.saas.account.service.AccountService;
 import com.usoftchina.saas.account.service.CompanyService;
 import com.usoftchina.saas.account.service.RoleService;
 import com.usoftchina.saas.account.vo.CompanyBaseVO;
+import com.usoftchina.saas.auth.client.annotation.IgnoreAuth;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.exception.ExceptionCode;
@@ -48,6 +48,7 @@ public class AccountController {
      * @return
      */
     @PostMapping("/register")
+    @IgnoreAuth
     public Result register(@RequestBody AccountRegDTO accountRegDTO) {
         // 判断是否已注册
         Account account = accountService.findByUsername(accountRegDTO.getUsername());
@@ -80,6 +81,7 @@ public class AccountController {
      * @return
      */
     @GetMapping(value = "/pwd/check")
+    @IgnoreAuth
     public Result<AccountDTO> validByUsernameAndPwd(@RequestParam(value = "username") String username, @RequestParam(value = "password") String password) {
         Account account = getAccountByUsername(username);
         if (null == account) {
@@ -158,6 +160,21 @@ public class AccountController {
         return Result.success(getAccountDTO(account));
     }
 
+    /**
+     * 按当前登录用户查找账户
+     *
+     * @return
+     */
+    @GetMapping
+    public Result<AccountDTO> getAccountByAuthorization() {
+        Account account = accountService.findByPrimaryKey(BaseContextHolder.getUserId());
+        if (null == account) {
+            return Result.error(ExceptionCode.USER_NOT_EXIST);
+        }
+
+        return Result.success(getAccountDTO(account));
+    }
+
     /**
      * 按ID查找账户
      *

+ 4 - 2
base-servers/account/account-server/src/main/resources/application.yml

@@ -50,7 +50,7 @@ eureka:
   client:
     registryFetchIntervalSeconds: 5
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.0.181:8510/eureka/
 server:
   port: 8580
   tomcat:
@@ -63,4 +63,6 @@ info:
   spring-cloud-version: '@spring.cloud.version@'
 mybatis:
   type-aliases-package: com.usoftchina.saas.account.po,com.usoftchina.saas.account.vo
-  mapper-locations: classpath:mapper/*.xml
+  mapper-locations: classpath:mapper/*.xml
+auth:
+  public-key: auth/pub.key

+ 8 - 1
base-servers/auth/auth-client/src/main/java/com/usoftchina/saas/auth/client/configuration/AuthAutoConfiguration.java

@@ -4,13 +4,15 @@ import com.usoftchina.saas.auth.client.interceptor.AuthRestInterceptor;
 import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 /**
  * @author yingp
  * @date 2018/10/2
  */
 @Configuration
-public class AuthAutoConfiguration {
+public class AuthAutoConfiguration implements WebMvcConfigurer {
     @Bean
     public AuthConfig authConfig() {
         return new AuthConfig();
@@ -25,4 +27,9 @@ public class AuthAutoConfiguration {
     public ServiceFeignInterceptor serviceFeignInterceptor() {
         return new ServiceFeignInterceptor();
     }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(authRestInterceptor());
+    }
 }

+ 8 - 6
base-servers/auth/auth-client/src/main/java/com/usoftchina/saas/auth/client/interceptor/AuthRestInterceptor.java

@@ -37,12 +37,14 @@ public class AuthRestInterceptor extends HandlerInterceptorAdapter {
             return super.preHandle(request, response, handler);
         }
         String token = request.getHeader(authConfig.getAuthHeader());
-        JwtInfo infoFromToken = JwtHelper.getInfoFromToken(token, authConfig.getPublicKey());
-        BaseContextHolder.setAppId(infoFromToken.getAppId());
-        BaseContextHolder.setUserId(infoFromToken.getUserId());
-        BaseContextHolder.setCompanyId(infoFromToken.getCompanyId());
-        BaseContextHolder.setToken(token);
-        log.info("token={} \\r\\n userName={}", token, infoFromToken.getUserName());
+        if (null != token) {
+            JwtInfo infoFromToken = JwtHelper.getInfoFromToken(token, authConfig.getPublicKey());
+            BaseContextHolder.setAppId(infoFromToken.getAppId());
+            BaseContextHolder.setUserId(infoFromToken.getUserId());
+            BaseContextHolder.setCompanyId(infoFromToken.getCompanyId());
+            BaseContextHolder.setToken(token);
+            log.info("token={} \\r\\n userName={}", token, infoFromToken.getUserName());
+        }
         return super.preHandle(request, response, handler);
     }
 

+ 0 - 1
base-servers/ui-server/src/main/java/com/usoftchina/saas/ui/controller/co/CoViewController.java

@@ -1,7 +1,6 @@
 package com.usoftchina.saas.ui.controller.co;
 
 import com.usoftchina.saas.base.Result;
-import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.ui.service.ViewService;
 import com.usoftchina.saas.ui.service.co.CoViewService;
 import org.slf4j.Logger;

+ 0 - 3
base-servers/ui-server/src/main/java/com/usoftchina/saas/ui/service/co/CoViewService.java

@@ -2,11 +2,8 @@ package com.usoftchina.saas.ui.service.co;
 
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.ui.core.Const;
-import com.usoftchina.saas.ui.po.View;
 import com.usoftchina.saas.ui.po.co.CoView;
-import com.usoftchina.saas.ui.repository.ViewRepository;
 import com.usoftchina.saas.ui.repository.co.CoViewRepository;
-import com.usoftchina.saas.ui.service.ComponentService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;