Commit b40ae024 by “zcwang”

modify: 登录校验

parent 0a291b58
......@@ -30,8 +30,8 @@ import com.netease.mail.yanxuan.change.biz.service.ChangeFlowExecService;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeTypeService;
import com.netease.mail.yanxuan.change.common.bean.AdminUserHolder;
import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean;
import com.netease.mail.yanxuan.change.common.bean.ResponseCode;
import com.netease.mail.yanxuan.change.common.bean.ResponseCodeEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum;
......@@ -101,7 +101,7 @@ public class ChangeFlowBiz {
private ChangeRecordMapper changeRecordMapper;
public String createAndSubmit(ChangeFlowCreateReq changeFlowCreateReq) {
String uid = RequestLocalBean.getUid();
String uid = AdminUserHolder.getUserName();
// String userName = RequestLocalBean.getName();
// 校验变更主体
checkSubject(changeFlowCreateReq);
......@@ -312,7 +312,7 @@ public class ChangeFlowBiz {
// 检查工单节点
this.checkNode(changeRecord.getFlowNode(), changeFlowSubmitReq.getCurrentNodeId());
// todo:检验操作权限
String uid = RequestLocalBean.getUid();
String uid = AdminUserHolder.getUserName();
String changeCommander = changeRecord.getChangeCommander();
if (!uid.equals(changeCommander)) {
throw ExceptionFactory.createBiz(ResponseCode.NO_AUTH, ResponseCode.NO_AUTH.getMsg());
......
......@@ -4,7 +4,7 @@
* Copyright 2020 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.web.config;
package com.netease.mail.yanxuan.change.common.bean;
import org.springframework.stereotype.Component;
......
......@@ -7,6 +7,8 @@ import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.netease.mail.yanxuan.change.common.bean.AdminUserHolder;
import lombok.extern.slf4j.Slf4j;
@Slf4j
......
package com.netease.mail.yanxuan.change.web.config;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean;
import com.netease.mail.yanxuan.change.common.bean.ResponseCodeEnum;
import com.netease.mail.yanxuan.change.common.util.ResponseUtil;
import lombok.extern.slf4j.Slf4j;
/**
* 严选用户登录拦截器
*
* @author lwtang
*/
@Component
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String yxUid = RequestLocalBean.getUid();
if (yxUid == null) {
String text = JSON.toJSONString(AjaxResult.of(ResponseCodeEnum.SC_UNAUTHORIZED.getCode(), "not-login"));
String callback = request.getParameter("callback");
if (!StringUtils.isEmpty(callback)) {
text = callback + "(" + text + ")";
}
ResponseUtil.writeJson(response, text);
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
log.info("postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
log.info("afterCompletion");
}
}
package com.netease.mail.yanxuan.change.web.config;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean;
import com.netease.mail.yx.openid.YxOpenidLogin;
import com.netease.mail.yx.openid.YxOpenidUser;
import lombok.extern.slf4j.Slf4j;
/**
* 提取用户uid
*
* @author lwtang
*/
@Component
@Slf4j
public class UserInterceptor implements HandlerInterceptor {
@Value("${product:product}")
String product;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
//获取cookie信息
Cookie[] cookies = request.getCookies();
String userCookie = null;
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("YX_OPENID_SESS")) {
userCookie = cookie.getValue();
}
}
}
log.info("YX_OPENID_SESS: {}", userCookie);
// 解析cookie
YxOpenidUser yxuser = null;
if (userCookie != null) {
yxuser = YxOpenidLogin.parseCookie(userCookie);
}
// ajax请求,走返回码
String accept = request.getHeader("Accept");
// cookie不存在或者超过一个小时(时间自己定)
if (yxuser == null || yxuser.getLoginTime() < System.currentTimeMillis() - 60 * 1000 * 1000) {
//如果是ajax请求
if (!accept.contains("text/html")
|| request.getRequestURI().contains("ajax")) {
log.info("ajax request user is null or login time too early, yxuser: {}", yxuser);
} else {
String url = request.getRequestURL().toString();
String loginUrl = YxOpenidLogin.getLoginUrl(url);
log.info("redirect url: {}", loginUrl);
response.sendRedirect(loginUrl);
}
} else {
// 获取用户信息
// 邮箱地址
String email = yxuser.getEmail();
RequestLocalBean.setUid(email);
// 中文姓名
String fullname = yxuser.getFullName();
RequestLocalBean.setName(fullname);
// 用户登录时间戳
long loginTime = yxuser.getLoginTime();
log.info("[UserAccess] user: {}, url: {}", email, request.getPathInfo());
RequestLocalBean.setLastLoginTime(loginTime);
}
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 {
RequestLocalBean.clear();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment