温红权 9 лет назад
Родитель
Сommit
ebac6ecae2

+ 29 - 0
VisualInspection_server/src/main/java/com/xintong/visualinspection/controller/BaseController.java

@@ -56,6 +56,35 @@ public class BaseController {
      * @exception
      * @since  1.0.0
      */
+    public String returnSuccessResult(){
+    	Map<String,Object> result = new HashMap<>();
+    	result.put("result_code", 0);
+    	result.put("result_desc", "success");
+        return JSON.toJSON(result).toString();
+    }
+    
+    /**
+     * 返回前台结果结构体
+     * @return
+     * String
+     * @exception
+     * @since  1.0.0
+     */
+    public String returnSuccessResult(Object o){
+    	Map<String,Object> result = new HashMap<>();
+    	result.put("result_code", 0);
+    	result.put("result_desc", "success");
+    	result.put("result_data", o);
+        return JSON.toJSON(result).toString();
+    }
+    
+    /**
+     * 返回前台结果结构体
+     * @return
+     * String
+     * @exception
+     * @since  1.0.0
+     */
     public String returnSuccessResult(String result_desc, Object o){
     	Map<String,Object> result = new HashMap<>();
     	result.put("result_code", 0);

+ 20 - 2
VisualInspection_server/src/main/java/com/xintong/visualinspection/controller/UserController.java

@@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
 import com.alibaba.fastjson.JSON;
 import com.xintong.visualinspection.bean.User;
 import com.xintong.visualinspection.pojo.JwtAuthenticationResponse;
+import com.xintong.visualinspection.securityTools.RedisCacheUtil;
 import com.xintong.visualinspection.service.AuthService;
 import com.xintong.visualinspection.service.UserService;
 
@@ -37,14 +38,31 @@ public class UserController extends BaseController {
     @Autowired
     private AuthService authService;
     
+    @Autowired
+    private RedisCacheUtil redisCacheUtil;
+    
     @Value("${jwt.header}")
     private String tokenHeader;
 
     @RequestMapping(value = "/auth/login",method=RequestMethod.POST)
-    public User login(@RequestBody User user){
+    public String login(@RequestBody User user){
     	User u = authService.login(user.getUsername(), user.getPassword());
-        return u;
+        return returnSuccessResult("登陆成功", u);
+    }
+    
+    @RequestMapping(value = "/logout",method=RequestMethod.POST)
+    public String logout(){
+    	//获取用户名
+    	String username = SecurityContextHolder.getContext().getAuthentication().getName();
+    	if(username!=null){
+    		redisCacheUtil.removeForUserName(username);
+    	}
+    	//返回参数
+    	return returnSuccessResult("退出成功");
     }
+    
+    
+    
     /**
      * 添加用户
      * @return

+ 3 - 1
VisualInspection_server/src/main/java/com/xintong/visualinspection/securityTools/JwtAuthenticationTokenFilter.java

@@ -61,7 +61,9 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
 				if (u != null) {
 					UserDetails userDetails = this.userDetailsService.loadUserByUsername(username);
 
-					User u_t = (User) u;
+					Class<User> c = User.class;
+
+					User u_t = c.cast(u); 
 	                //判定token中的用户名是否数据库中一致 是与缓存中的用户token一致
 					if (jwtTokenUtil.validateToken(authToken, userDetails)&& authToken.equals(u_t.getToken())) {
 						

+ 6 - 2
VisualInspection_server/src/main/java/com/xintong/visualinspection/securityTools/RedisCacheUtil.java

@@ -19,8 +19,12 @@ public class RedisCacheUtil {
 		return (UserDetails)redisTemplate.opsForValue().get(username);
 	}
 	
-	public void setUser(String token,UserDetails user,int timeout){
-		redisTemplate.opsForValue().set(token, user, timeout, TimeUnit.MILLISECONDS);
+	public void setUser(String username,UserDetails user,int timeout){
+		redisTemplate.opsForValue().set(username, user, timeout, TimeUnit.MILLISECONDS);
+	}
+	
+	public void removeForUserName(String username){
+		redisTemplate.delete(username);
 	}
 	
 

+ 3 - 7
VisualInspection_server/src/main/java/com/xintong/visualinspection/service/impl/UserServiceImpl.java

@@ -10,6 +10,9 @@ import com.xintong.visualinspection.service.BaseService;
 import com.xintong.visualinspection.service.UserService;
 import lombok.Data;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -93,13 +96,6 @@ public class UserServiceImpl extends BaseService implements UserService {
 
     @Override
     public UserDetails loadUserByUsername(String username) {
-
-//        try {
-//            userInfoDao.getAll();
-//        }catch (Exception e){
-//            System.out.print(e.getCause());
-//        }
-
         User user = userInfoDao.findByUserName(username);
         if (user != null) {
             List<Permission> permissions = permissionDao.findByAdminUserId(user.getId());