Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
56b41767
Commit
56b41767
authored
May 09, 2018
by
技术部-任文超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
检查token是否有效
如果有效,延续生命期(延续后有效期24Hour)
parent
55e60a8f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
74 deletions
+28
-74
UserController.java
...ntgroup/xyqb/controller/internal/user/UserController.java
+28
-74
No files found.
src/main/java/cn/quantgroup/xyqb/controller/internal/user/UserController.java
View file @
56b41767
...
@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.controller.internal.user;
...
@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.controller.internal.user;
import
cn.quantgroup.tech.util.TechEnvironment
;
import
cn.quantgroup.tech.util.TechEnvironment
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.lock.PasswordErrorFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.lock.PasswordErrorFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller
;
import
cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller
;
...
@@ -9,13 +10,12 @@ import cn.quantgroup.xyqb.controller.IBaseController;
...
@@ -9,13 +10,12 @@ import cn.quantgroup.xyqb.controller.IBaseController;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.entity.WechatUserInfo
;
import
cn.quantgroup.xyqb.exception.UserNotExistException
;
import
cn.quantgroup.xyqb.exception.UserNotExistException
;
import
cn.quantgroup.xyqb.exception.VerificationCodeErrorException
;
import
cn.quantgroup.xyqb.exception.VerificationCodeErrorException
;
import
cn.quantgroup.xyqb.exception.WechatRelateUserException
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.UserModel
;
import
cn.quantgroup.xyqb.model.UserModel
;
import
cn.quantgroup.xyqb.model.UserStatistics
;
import
cn.quantgroup.xyqb.model.UserStatistics
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.service.merchant.IMerchantService
;
import
cn.quantgroup.xyqb.service.merchant.IMerchantService
;
import
cn.quantgroup.xyqb.service.register.IUserRegisterService
;
import
cn.quantgroup.xyqb.service.register.IUserRegisterService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
...
@@ -24,17 +24,15 @@ import cn.quantgroup.xyqb.service.user.ILockIpv4Service;
...
@@ -24,17 +24,15 @@ import cn.quantgroup.xyqb.service.user.ILockIpv4Service;
import
cn.quantgroup.xyqb.service.user.IUserDetailService
;
import
cn.quantgroup.xyqb.service.user.IUserDetailService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.session.XyqbSessionContextHolder
;
import
cn.quantgroup.xyqb.util.IPUtil
;
import
cn.quantgroup.xyqb.util.IPUtil
;
import
cn.quantgroup.xyqb.util.MqUtils
;
import
cn.quantgroup.xyqb.util.MqUtils
;
import
cn.quantgroup.xyqb.util.PasswordUtil
;
import
cn.quantgroup.xyqb.util.PasswordUtil
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.RedisTemplate
;
...
@@ -360,12 +358,14 @@ public class UserController implements IBaseController {
...
@@ -360,12 +358,14 @@ public class UserController implements IBaseController {
}
}
/**
/**
* 检查token是否已经过期不存在了
* 检查token是否有效
* 如果有效,延续生命期(延续后有效期24Hour)
*
*
* @param token
* @param token
- sid,session的id
* @return
* @return
*/
*/
@LogHttpCaller
@LogHttpCaller
@IpValidator
@RequestMapping
(
"/exists_token"
)
@RequestMapping
(
"/exists_token"
)
public
JsonResult
checkToken
(
@RequestParam
String
token
)
{
public
JsonResult
checkToken
(
@RequestParam
String
token
)
{
if
(
StringUtils
.
isEmpty
(
token
)){
if
(
StringUtils
.
isEmpty
(
token
)){
...
@@ -374,14 +374,32 @@ public class UserController implements IBaseController {
...
@@ -374,14 +374,32 @@ public class UserController implements IBaseController {
if
(
token
.
contains
(
"*"
)){
if
(
token
.
contains
(
"*"
)){
return
JsonResult
.
buildSuccessResult
(
null
,
false
);
return
JsonResult
.
buildSuccessResult
(
null
,
false
);
}
}
String
tokenKey
=
Constants
.
SESSION_PREFIX
+
token
;
String
tokenKey
=
Constants
.
SESSION_PREFIX
+
token
;
String
tokenKey2
=
Constants
.
Session
.
USER_SESSION_CACHE
+
token
;
String
tokenKey2
=
Constants
.
Session
.
USER_SESSION_CACHE
+
token
;
return
JsonResult
.
buildSuccessResult
(
null
,
stringRedisTemplate
.
hasKey
(
tokenKey
)||
stringRedisTemplate
.
hasKey
(
tokenKey2
));
// 判断token是否存在
boolean
exist
=
stringRedisTemplate
.
hasKey
(
tokenKey
)||
stringRedisTemplate
.
hasKey
(
tokenKey2
);
/* 进一步判断session是否有效,有效时,自动续期 */
if
(
exist
){
// 获取session信息
SessionStruct
sessionStruct
=
XyqbSessionContextHolder
.
getXSessionFromRedis
(
token
);
if
(
Objects
.
isNull
(
sessionStruct
))
{
/* 如果没有获取到session信息则返回错误信息 */
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
else
{
/* 延续session生命期 */
try
{
sessionService
.
persistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
}
finally
{
XyqbSessionContextHolder
.
releaseSession
();
}
}
}
return
JsonResult
.
buildSuccessResult
(
null
,
exist
);
}
}
@RequestMapping
(
"/syncUserInfo"
)
@RequestMapping
(
"/syncUserInfo"
)
public
JsonResult
syncUserInfo
()
{
public
JsonResult
syncUserInfo
(
HttpServletRequest
request
)
{
log
.
error
(
"[监控][UserController][syncUserInfo] request-Header:{}"
,
JSON
.
toJSONString
(
getRequestHeaderMap
(
request
)));
User
user
=
getCurrentUserFromRedis
();
User
user
=
getCurrentUserFromRedis
();
if
(
null
==
user
)
{
if
(
null
==
user
)
{
return
JsonResult
.
buildErrorStateResult
(
null
,
null
);
return
JsonResult
.
buildErrorStateResult
(
null
,
null
);
...
@@ -497,70 +515,6 @@ public class UserController implements IBaseController {
...
@@ -497,70 +515,6 @@ public class UserController implements IBaseController {
return
false
;
return
false
;
}
}
/**
* 绑定微信
* @param openId - 微信openId
* @return
*/
@LogHttpCaller
@RequestMapping
(
"/associate_wechat"
)
public
JsonResult
associateWithWechat
(
String
openId
,
HttpServletRequest
request
)
{
User
user
=
getCurrentUserFromRedis
();
log
.
error
(
"[UserController][associateWithWechat][非法请求]微信关联,user:{},openId:{},request-Header:{}"
,
user
,
openId
,
JSON
.
toJSONString
(
getRequestHeaderMap
(
request
)));
return
JsonResult
.
buildSuccessResult
(
"[非法请求]微信关联"
,
null
,
1L
);
/*if(Objects.isNull(user) || Objects.isNull(user.getId())){
log.warn("微信关联失败,用户未登录:user:[{}],openId:[{}]",user,openId);
return JsonResult.buildErrorStateResult("请登陆后重新操作", null);
}
Long userId = user.getId();
*//* 判断用户是否已绑定其他微信 *//*
WechatUserInfo userInfoInDb = wechatService.queryByUserId(userId);
if (Objects.nonNull(userInfoInDb)) {
if(Objects.equals(openId, userInfoInDb.getOpenId())){
log.info("微信关联成功:重复关联:跳过:user:[{}],openId:[{}],wechatUserInfo:[{}]",user,openId,userInfoInDb);
return JsonResult.buildSuccessResult("微信关联成功", null);
}else if(StringUtils.isNotBlank(userInfoInDb.getOpenId())){
// 不做绑定
log.warn("微信关联失败,该用户已绑定其他微信:user:[{}],openId:[{}],wechatUserInfo:[{}]",user,openId,userInfoInDb);
return JsonResult.buildErrorStateResult("该用户已绑定其他微信", null);
}else{
// 清除无效微信信息
wechatService.forbiddenUserWeChat(userId);
}
}
*//* 执行绑定 *//*
WechatUserInfo userInfo = wechatService.findWechatUserInfoFromDb(openId);
log.info("微信关联:user:[{}],openId:[{}],wechatUserInfo:[{}]",user,openId,userInfo);
// 无微信信息
if (userInfo == null) {
log.warn("微信关联失败,缺少微信信息:user:[{}],openId:[{}],wechatUserInfo:[{}]",user,openId,userInfo);
return JsonResult.buildErrorStateResult("还没有保存微信信息", null);
}
// 排他性 - 先入为主
if (Objects.nonNull(userInfo.getUserId()) && userInfo.getUserId()>0 && !Objects.equals(userId, userInfo.getUserId())) {
log.warn("微信关联失败,该微信已经被其他用户绑定:user:[{}],openId:[{}],wechatUserInfo:[{}]",user,openId,userInfo);
return JsonResult.buildErrorStateResult("该微信已经被其他用户绑定", null);
}
*//*
* 未绑定信用钱包用户
*//*
try {
int rows = wechatService.relateUser(userId, user.getPhoneNo(), openId);
if(rows > 0){
log.info("微信关联成功:rows:{}, user:[{}],openId:[{}],wechatUserInfo:[{}]",rows,user,openId,userInfo);
return JsonResult.buildSuccessResult("微信关联成功", null);
}else {
log.warn("微信关联失败,保存遇到问题:rows:{}, user:[{}],openId:[{}],wechatUserInfo:[{}]",rows,user,openId,userInfo);
return JsonResult.buildErrorStateResult("微信关联失败", null);
}
} catch (Exception ex) {
// 不做绑定
log.warn("微信关联失败,保存遇到问题:user:[{}],openId:[{}],wechatUserInfo:[{}]",user,openId,userInfo, ex);
return JsonResult.buildErrorStateResult("微信关联失败", null);
}*/
}
/**
/**
* 校验短信验证码
* 校验短信验证码
* @param phoneNo
* @param phoneNo
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment