package com.sinata.rest.modular.system.controller;
|
|
import com.sinata.rest.config.properties.RestProperties;
|
import com.sinata.rest.modular.auth.util.JwtTokenUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.StringUtils;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
@Slf4j
|
@Service
|
public class AuthController {
|
|
@Resource
|
private JwtTokenUtil jwtTokenUtil;
|
|
@Resource
|
private RestProperties restProperties;
|
|
/**
|
* 验证用户ID
|
* @param request
|
* @param userId 待验证用户ID
|
* @return code:0通过,-1不匹配
|
*/
|
public int authUserId(HttpServletRequest request, Integer userId) {
|
int code = 0;
|
// jwt鉴权机制是否开启
|
if(!restProperties.isAuthOpen()) {
|
return code;
|
}
|
|
try {
|
// 获取用户ID
|
Integer authUserId = getAuthUserId(request);
|
// 校验ID是否正确
|
if(userId != null && userId.intValue() != authUserId) {
|
code = -1;
|
}
|
} catch (Exception e) {
|
code = -2;
|
e.printStackTrace();
|
}
|
return code;
|
}
|
|
/**
|
* 获取用户ID
|
*/
|
public Integer getAuthUserId(HttpServletRequest request) {
|
String requestHeader = request.getHeader("Authorization");
|
if(!StringUtils.isEmpty(requestHeader) && requestHeader.length() > 7) {
|
// 获取token
|
String authToken = requestHeader.substring(7);
|
// 获取用户ID
|
String authUserId = jwtTokenUtil.getUsernameFromToken(authToken);
|
if(!StringUtils.isEmpty(authUserId)) {
|
return Integer.parseInt(authUserId);
|
}
|
}
|
return 0;
|
}
|
|
public String getRequestRandomKey(HttpServletRequest request) {
|
String requestHeader = request.getHeader("Authorization");
|
if (!StringUtils.isEmpty(requestHeader) && requestHeader.length() > 7) {
|
return jwtTokenUtil.getMd5KeyFromToken(requestHeader.substring(7));
|
}
|
return "";
|
}
|
|
}
|