Quellcode durchsuchen

Systemsession获取用户信息配置修改。

dongbw vor 8 Jahren
Ursprung
Commit
3a419c2c58

+ 5 - 0
donate-service/src/main/java/com/uas/service/donate/SSOConfiguration.java

@@ -5,6 +5,7 @@ import com.uas.service.donate.profile.Dev;
 import com.uas.service.donate.profile.Prod;
 import com.uas.service.donate.profile.Test;
 import com.uas.service.donate.util.ContextUtils;
+import com.uas.service.donate.web.filter.AccessInterceptor;
 import com.uas.service.donate.web.filter.SSOInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
@@ -28,6 +29,9 @@ public class SSOConfiguration extends WebMvcConfigurerAdapter {
     @Autowired
     private SSOInterceptor ssoInterceptor;
 
+    @Autowired
+    private AccessInterceptor accessInterceptor;
+
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
         /**
@@ -39,6 +43,7 @@ public class SSOConfiguration extends WebMvcConfigurerAdapter {
                         "/org/**", "/projectconclude/**", "/projectevolve/**", "/projectfinance/**",
                         "/projectrecode/**", "/wxpay/**", "/alipay/**", "/mobile/**", "/index", "/activeCenter",
                         "/app/**", "/userAgreement");
+        registry.addInterceptor(accessInterceptor).addPathPatterns("/**");
     }
 
     @Bean

+ 14 - 4
donate-service/src/main/java/com/uas/service/donate/controller/ProjectController.java

@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.web.bind.RequestState;
+import com.uas.service.donate.core.support.SystemSession;
 import com.uas.service.donate.model.Project;
 import com.uas.service.donate.model.SearchFilter;
+import com.uas.service.donate.model.User;
 import com.uas.service.donate.service.ProjectService;
 import com.uas.service.donate.util.FileUrl;
 import com.uas.service.donate.util.HttpUtils;
@@ -18,6 +20,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
@@ -25,7 +28,7 @@ import java.util.Map;
 
 @Controller
 @RequestMapping("/project")
-public class ProjectController {
+public class ProjectController{
 
     @Autowired
     private ProjectService projectService ;
@@ -84,9 +87,11 @@ public class ProjectController {
      */
     @RequestMapping(value = "/getOrgProjects", method = RequestMethod.GET)
     @ResponseBody
-    public Page<Project> getOrgProjects(PageParams params, String searchFilter){
+    public Page<Project> getOrgProjects(PageParams params, String searchFilter, HttpServletRequest request){
         PageInfo pageInfo = new PageInfo(params);
         SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        User user = (User)request.getSession().getAttribute("user");
+        SystemSession.setUser(user);
         return projectService.getOrgProjects(pageInfo, filter);
     }
 
@@ -134,8 +139,10 @@ public class ProjectController {
      */
     @ResponseBody
     @RequestMapping(value = "/status",method = RequestMethod.GET)
-    public Page<Project> findStatus(String status,int page ,int size){
+    public Page<Project> findStatus(String status,int page ,int size, HttpServletRequest request){
         Pageable pageable=new PageRequest(page,size);
+        User user = (User)request.getSession().getAttribute("user");
+        SystemSession.setUser(user);
         if("进行中".equals(status)){
             return projectService.findInProcess(pageable);
         }
@@ -199,7 +206,10 @@ public class ProjectController {
      */
     @ResponseBody
     @RequestMapping(value = "/detail/{id}",method = RequestMethod.GET)
-    public Project showDetail(@PathVariable("id") Long id) {
+    public Project showDetail(@PathVariable("id") Long id, HttpServletRequest request) {
+//        User user = (User)request.getSession().getAttribute("user");
+//        SystemSession.setUser(user);
+        System.out.println(SystemSession.getUser());
         return projectService.findOne(id);
     }
 

+ 1 - 12
donate-service/src/main/java/com/uas/service/donate/model/User.java

@@ -8,6 +8,7 @@ import java.io.Serializable;
 
 @Entity
 @Table(name="donate$user")
+@Cacheable
 public class User implements Serializable{
 
     private static final long serialVersionUID = 1L;
@@ -137,16 +138,4 @@ public class User implements Serializable{
         this.type = type;
     }
 
-    @Override
-    public String toString() {
-        return "User{" +
-                "userUU=" + userUU +
-                ", name='" + name + '\'' +
-                ", tel=" + tel +
-                ", identity=" + identity +
-                ", organization='" + org.getName() + '\'' +
-                ", userIMId=" + userIMId +
-                ", type='" + type + '\'' +
-                '}';
-    }
 }

+ 78 - 0
donate-service/src/main/java/com/uas/service/donate/web/filter/AccessInterceptor.java

@@ -0,0 +1,78 @@
+package com.uas.service.donate.web.filter;
+
+import com.uas.account.entity.UserView;
+import com.uas.service.donate.core.support.SystemSession;
+import com.uas.service.donate.dao.UserDao;
+import com.uas.service.donate.model.User;
+import com.uas.service.donate.util.FastjsonUtils;
+import com.uas.service.donate.util.StringUtils;
+import com.uas.sso.SSOHelper;
+import com.uas.sso.SSOToken;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 授权拦截,未登录也能访问的页面
+ *
+ * Created by dongbw
+ * 17/12/21 14:53.
+ */
+@Component
+public class AccessInterceptor extends AbstractSSOInterceptor{
+    @Autowired
+    private UserDao userDao;
+
+    /**
+     * 未登录情况下的处理
+     *
+     * @param request
+     * @param response
+     * @return true继续,false跳转登录
+     */
+    @Override
+    protected boolean onAuthenticateFailed(HttpServletRequest request, HttpServletResponse response) {
+        return true;
+    }
+
+    /**
+     * 已登录情况下的处理
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @Override
+    protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
+        User user = (User)request.getSession().getAttribute("user");
+        if (user == null) {
+            SSOToken token = SSOHelper.attrToken(request);
+            user = getUserByToken(token);
+            if (user != null) {
+                request.getSession().setAttribute("user", user);
+                User u = userDao.findOne(user.getUserUU());
+                if (null == u) {
+                    u = userDao.save(user);
+                }
+                SystemSession.setUser(u);
+            }
+        } else {
+            User u = userDao.findOne(user.getUserUU());
+            if (null == u) {
+                u = userDao.save(user);
+            }
+            SystemSession.setUser(u);
+        }
+    }
+
+    private User getUserByToken(SSOToken token) {
+        User user = null;
+        if (token != null && !StringUtils.isEmpty(token.getData())) {
+            UserView userView = FastjsonUtils.fromJson(token.getData(), UserView.class);
+            user = new User(userView);
+        }
+        return user;
+    }
+}

+ 9 - 10
donate-service/src/main/java/com/uas/service/donate/web/filter/SSOInterceptor.java

@@ -30,24 +30,22 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 
 	@Override
 	protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
-		UserView user = (UserView) request.getSession().getAttribute("user");
+		User user = (User)request.getSession().getAttribute("user");
 		if (user == null) {
 			SSOToken token = SSOHelper.attrToken(request);
 			user = getUserByToken(token);
 			if (user != null) {
 				request.getSession().setAttribute("user", user);
-				User u = userDao.findOne(Long.valueOf(user.getDialectUID()));
+				User u = userDao.findOne(user.getUserUU());
 				if (null == u) {
-					u = new User(user);
-					u = userDao.save(u);
+					u = userDao.save(user);
 				}
 				SystemSession.setUser(u);
 			}
 		} else {
-			User u = userDao.findOne(Long.valueOf(user.getDialectUID()));
+			User u = userDao.findOne(user.getUserUU());
 			if (null == u) {
-				u = new User(user);
-				u = userDao.save(u);
+				u = userDao.save(user);
 			}
 			SystemSession.setUser(u);
 		}
@@ -60,10 +58,11 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 		SystemSession.clear();
 	}
 
-	private UserView getUserByToken(SSOToken token) {
-        UserView user = null;
+	private User getUserByToken(SSOToken token) {
+        User user = null;
 		if (token != null && !StringUtils.isEmpty(token.getData())) {
-			user = FastjsonUtils.fromJson(token.getData(), UserView.class);
+			UserView userView = FastjsonUtils.fromJson(token.getData(), UserView.class);
+			user = new User(userView);
 		}
 		return user;
 	}

+ 5 - 2
donate-service/src/main/webapp/resources/js/project/controllers/ProjectDetailCtrl.js

@@ -1,7 +1,7 @@
 define([ 'app/app' ], function(app) {
     'use strict';
-    app.register.controller('ProjectDetailCtrl', ['$scope', '$rootScope', 'Project', '$stateParams', 'BaseService', '$sce',
-        function ($scope, $rootScope, Project, $stateParams, BaseService, $sce) {
+    app.register.controller('ProjectDetailCtrl', ['$scope', '$rootScope', 'Project', '$stateParams', 'BaseService', '$sce', '$timeout',
+        function ($scope, $rootScope, Project, $stateParams, BaseService, $sce, $timeout) {
         $scope.loading = true;
         $rootScope.page = 'project';
         BaseService.scrollBackToTop();
@@ -86,6 +86,9 @@ define([ 'app/app' ], function(app) {
         // 设置加载状态
         $scope.setLoading = function(value) {
             $scope.loading = value;
+            $timeout(function () {
+                $scope.loading = false;
+            }, 2000);
         };
 
         // 输入金额