html代码
function login() {
var encrypt=new JSEncrypt();
encrypt.setPublicKey(publicKey);
var name=encrypt.encrypt(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲name").val()); …("#pwd").val());
KaTeX parse error: Expected '}', got 'EOF' at end of input: …ult.code==200){.cookie(“token”,result.data);
location.href=“index.html”;
}else{console.log(result.msg);}
}
})
}
service层
@Override
public ServerResponse login(String name, String pwd) {
name = RSAUtil.decrypt(name);
pwd = RSAUtil.decrypt(pwd);
if (!StringUtils.isNotEmpty(name) || !StringUtils.isNotEmpty(pwd)) {
return ServerResponse.error(ResponseEnum.LOGIN_MEMBER_NULL_IS_EMPTY);
}
QueryWrapper m = new QueryWrapper<>();
m.eq("name", name);
Member member = memberMapper.selectOne(m);
if (member == null) {
return ServerResponse.error(ResponseEnum.LOGIN_MEMBER_NAME_ERROR);
}
if (!pwd.equals(member.getPwd())) {
return ServerResponse.error(ResponseEnum.LOGIN_MEMBER_PWD_ERROR);
}
MemberVo vo = new MemberVo();
Long id = member.getId();
vo.setId(id);
vo.setName(member.getName());
vo.setRealName(member.getRealName());
String uuid = UUID.randomUUID().toString();
vo.setUuid(uuid);
String s1 = JSONObject.toJSONString(vo);
String s2 = null;
try {
s2 = Base64.getEncoder().encodeToString(s1.getBytes("utf-8"));
String sign = MD5Util.sign(s2, SystemConstant.APPSECRET);
String baseSign = Base64.getEncoder().encodeToString(sign.getBytes());
String result=s2+"."+baseSign;
RedisUtil.setEx(KeyUtil.buildMemberKey(id,uuid),"1", KeyUtil.MEMBER_EXPIRE);
return ServerResponse.success(result);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
拦截器代码:
public class LoginInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// String origin = request.getHeader("Origin");
response.addHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
response.addHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "x-auth,content-type,nonce,time,sign");
/*获取方法*/
String method1 = request.getMethod();
if ("options".equalsIgnoreCase(method1)) { return false; }
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
if (!method.isAnnotationPresent(Check.class)) { return true; }
String header = request.getHeader("x-auth");
if (StringUtils.isEmpty(header)) { throw new GlobalException(ResponseEnum.HANDLER_IS_MISS); }
String[] split = header.split("\\.");
if (split.length != 2) { throw new GlobalException(ResponseEnum.HANDLER_CONTENT_IS_MISS); }
String memberJsonBase64 = split[0];
String signBase64 = split[1];
String sign = MD5Util.sign(memberJsonBase64, SystemConstant.APPSECRET);
String s = Base64.getEncoder().encodeToString(sign.getBytes());
if (!signBase64.equals(s)) { throw new GlobalException(ResponseEnum.DATA_IS_CHANGE); }
//获取会员信息
String s1 = new String(Base64.getDecoder().decode(memberJsonBase64), "utf-8");
MemberVo vo = JSONObject.parseObject(s1, MemberVo.class);
String uuid = vo.getUuid();
Long id = vo.getId();
//验证是否过期
boolean exist = RedisUtil.exist(KeyUtil.buildMemberKey(id, uuid));
if (!exist) { throw new GlobalException(ResponseEnum.LOGIN_IS_TIMEOUT); }
RedisUtil.expire(KeyUtil.buildMemberKey(id, uuid), KeyUtil.MEMBER_EXPIRE);
request.setAttribute(SystemConstant.CURRENT_MEMBER, vo);
return true;
}
}