中台登录增加拦截器,token验证

master
jiakun.lin 4 years ago
parent 50d0a855c9
commit 1d8fd46bee
  1. 6
      pom.xml
  2. 29
      src/main/java/com/yipin/liuwanr/config/AuthConfig.java
  3. 3
      src/main/java/com/yipin/liuwanr/entity/UserInfo.java
  4. 58
      src/main/java/com/yipin/liuwanr/filter/AuthInterceptor.java
  5. 13
      src/main/java/com/yipin/liuwanr/service/UserInfoService.java

@ -271,6 +271,12 @@
<version>2.3.28</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<finalName>root</finalName>

@ -0,0 +1,29 @@
package com.yipin.liuwanr.config;
/**
* @description
* @author: Mr.JK
* @create: 2021-06-03 16:24
**/
import com.yipin.liuwanr.filter.AuthInterceptor;
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;
@Configuration
public class AuthConfig implements WebMvcConfigurer {
@Bean
public AuthInterceptor initAuthInterceptor(){
return new AuthInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(initAuthInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/userInfo/adminLogins/**","/userInfo/loginSchoolClient/**","/userInfo/logins/**","/userInfo/updateLogInNumber/**");
}
}

@ -101,4 +101,7 @@ public class UserInfo {
private Integer organizationRelationshipId;
//登陆时间
private String dataTime;
//鉴权token
private String loginToken;
}

@ -0,0 +1,58 @@
package com.yipin.liuwanr.filter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
/**
* @description
* @author: Mr.JK
* @create: 2021-06-03 16:19
**/
public class AuthInterceptor implements HandlerInterceptor {
@Resource
StringRedisTemplate stringRedisTemplate;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String token = request.getHeader("token");
if (StringUtils.isEmpty(token)) {
response.getWriter().print("0");//用户未登录,请登录后操作!
return false;
}
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
Object loginStatus = ops.get(token);
if( Objects.isNull(loginStatus)){
response.getWriter().print("1");//token错误
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}

@ -437,6 +437,13 @@ public class UserInfoService {
// List<UserInfo> studentList = userInfoMapper.loginsGetStudentSchoolInfo(userId,schoolId);
List<UserInfoReceiveVo> studentList = userInfoMapper.loginsGetStudentSchoolInfo(userId,schoolId);
obj.put("studentList",studentList);
//鉴权,登录后将信息存入redis
ValueOperations<String, String> redis = stringRedisTemplate.opsForValue();
String loginToken = UUID.randomUUID().toString();
redis.set(loginToken,user.getUserName(),2, TimeUnit.HOURS);
obj.put("loginToken",loginToken);
resp.put("retcode", 200);
resp.put("retvalue", obj);
}else {
@ -543,6 +550,12 @@ public class UserInfoService {
ValueOperations<String, String> redis = stringRedisTemplate.opsForValue();
redis.set(token,lastLoginTime, 24, TimeUnit.HOURS);
user.setDataTime(lastLoginTime);
//鉴权,登录后将信息存入redis
String loginToken = UUID.randomUUID().toString();
redis.set(loginToken,user.getUserName(),2, TimeUnit.HOURS);
user.setLoginToken(loginToken);
resp.put("retvalue",user);
resp.put("retcode", 200);
}

Loading…
Cancel
Save