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
1f22aa27
Commit
1f22aa27
authored
Jan 06, 2017
by
zhouqian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
登录增加系统key
parent
c7ff08c1
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
67 additions
and
104 deletions
+67
-104
IBaseController.java
...n/java/cn/quantgroup/xyqb/controller/IBaseController.java
+0
-43
AppController.java
...antgroup/xyqb/controller/external/user/AppController.java
+8
-9
AuthInfoController.java
...up/xyqb/controller/internal/login/AuthInfoController.java
+3
-3
UserController.java
...ntgroup/xyqb/controller/internal/user/UserController.java
+9
-7
LoginProperties.java
src/main/java/cn/quantgroup/xyqb/model/LoginProperties.java
+14
-0
SessionValue.java
...n/java/cn/quantgroup/xyqb/model/session/SessionValue.java
+3
-1
ISessionService.java
...a/cn/quantgroup/xyqb/service/session/ISessionService.java
+6
-4
SessionServiceImpl.java
...ntgroup/xyqb/service/session/impl/SessionServiceImpl.java
+24
-21
TestUserLogin.java
src/test/java/user/TestUserLogin.java
+0
-16
No files found.
src/main/java/cn/quantgroup/xyqb/controller/IBaseController.java
View file @
1f22aa27
...
...
@@ -27,49 +27,6 @@ public interface IBaseController {
}
default
Long
getChannelId
()
{
return
getNumber
(
"channelId"
);
}
default
Long
getCreatedFrom
()
{
return
getNumber
(
"createdFrom"
);
}
default
Long
getNumber
(
String
name
)
{
SessionStruct
session
=
getSessionStruct
();
try
{
return
Long
.
valueOf
(
session
.
getAttribute
(
name
));
}
catch
(
Exception
e
)
{
e
.
getStackTrace
();
}
return
0L
;
}
default
void
setNumber
(
String
name
,
Long
value
)
{
SessionStruct
session
=
getSessionStruct
();
if
(
session
!=
null
)
{
session
.
setAttribute
(
name
,
String
.
valueOf
(
value
));
}
}
default
void
setCreatedFrom
(
Long
createdFrom
)
{
setNumber
(
"createdFrom"
,
createdFrom
);
}
default
void
setChannelId
(
Long
channelId
)
{
setNumber
(
"channelId"
,
channelId
);
}
default
String
getAppChannel
()
{
SessionStruct
session
=
getSessionStruct
();
String
appChannel
=
session
.
getAttribute
(
"appChannel"
);
if
(
StringUtils
.
isEmpty
(
appChannel
)){
return
null
;
}
return
appChannel
;
}
default
HttpServletRequest
getRequest
()
{
ServletRequestAttributes
attrs
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
...
...
src/main/java/cn/quantgroup/xyqb/controller/external/user/AppController.java
View file @
1f22aa27
...
...
@@ -76,7 +76,7 @@ public class AppController implements IBaseController {
String
phoneNo
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
registerFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
idNo
,
String
name
,
String
key
,
HttpServletRequest
request
String
idNo
,
String
name
,
String
key
,
@RequestParam
(
required
=
false
,
defaultValue
=
""
)
String
appChannel
,
HttpServletRequest
request
)
{
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
return
JsonResult
.
buildErrorStateResult
(
"该用户名不存在,<br/>请重新输入或注册新账号。"
,
null
);
...
...
@@ -95,17 +95,16 @@ public class AppController implements IBaseController {
if
(
merchant
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"无效的商户"
,
null
);
}
SessionStruct
sessionStruct
=
sessionService
.
createSessionAndPersist
(
user
,
session
->
{
session
.
setAttribute
(
"channelId"
,
String
.
valueOf
(
channelId
)
);
session
.
setAttribute
(
"createdFrom"
,
String
.
valueOf
(
registerFrom
));
},
merchant
);
LoginProperties
loginProperties
=
new
LoginProperties
();
loginProperties
.
setChannelId
(
channelId
);
loginProperties
.
setMerchantName
(
merchant
.
getName
(
));
loginProperties
.
setCreatedFrom
(
registerFrom
);
loginProperties
.
setAppChannel
(
appChannel
);
SessionStruct
sessionStruct
=
sessionService
.
createSessionAndPersist
(
user
,
loginProperties
);
AuthBean
bean
=
new
AuthBean
();
bean
.
setToken
(
sessionStruct
.
getSid
());
bean
.
setPhoneNo
(
phoneNo
);
LOGGER
.
info
(
"第三方用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}"
,
request
.
getParameter
(
"registerFrom"
),
request
.
getParameter
(
"phoneNo"
),
getAppChannel
());
LOGGER
.
info
(
"第三方用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}"
,
request
.
getParameter
(
"registerFrom"
),
request
.
getParameter
(
"phoneNo"
),
appChannel
);
return
new
JsonResult
(
bean
);
}
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/login/AuthInfoController.java
View file @
1f22aa27
...
...
@@ -21,9 +21,9 @@ public class AuthInfoController implements IBaseController {
LoginInfo
loginInfo
=
new
LoginInfo
();
loginInfo
.
setUser
(
UserRet
.
getUserRet
(
sessionStruct
.
getValues
().
getUser
()));
LoginInfo
.
LoginContext
context
=
new
LoginInfo
.
LoginContext
();
context
.
setChannelId
(
getChannelId
());
context
.
setCreatedFrom
(
getCreatedFrom
());
context
.
setAppChannel
(
getAppChannel
());
context
.
setChannelId
(
sessionStruct
.
getValues
().
getLoginProperties
().
getChannelId
());
context
.
setCreatedFrom
(
sessionStruct
.
getValues
().
getLoginProperties
().
getCreatedFrom
());
context
.
setAppChannel
(
sessionStruct
.
getValues
().
getLoginProperties
().
getAppChannel
());
loginInfo
.
setLoginContext
(
context
);
return
JsonResult
.
buildSuccessResult
(
""
,
loginInfo
);
}
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/user/UserController.java
View file @
1f22aa27
...
...
@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.entity.UserDetail;
import
cn.quantgroup.xyqb.exception.UserNotExistException
;
import
cn.quantgroup.xyqb.model.AuthBean
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.LoginProperties
;
import
cn.quantgroup.xyqb.model.UserModel
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.service.merchant.IMerchantService
;
...
...
@@ -86,7 +87,6 @@ public class UserController implements IBaseController {
@RequestMapping
(
"/test"
)
public
JsonResult
test
()
{
setChannelId
(
100L
);
return
JsonResult
.
buildSuccessResult
(
""
,
getCurrentUser
());
}
...
...
@@ -384,8 +384,14 @@ public class UserController implements IBaseController {
private
JsonResult
createSession
(
Long
channelId
,
Long
createdFrom
,
String
appChannel
,
User
user
,
Merchant
merchant
)
{
AuthBean
authBean
=
new
AuthBean
();
LoginProperties
properties
=
new
LoginProperties
();
properties
.
setAppChannel
(
appChannel
);
properties
.
setMerchantName
(
merchant
.
getName
());
properties
.
setChannelId
(
channelId
);
properties
.
setCreatedFrom
(
createdFrom
);
//找到用户
String
sessionId
=
sessionService
.
findSessionIdByUserIdAndMerchant
(
user
.
getId
(),
merchant
);
String
sessionId
=
sessionService
.
findSessionIdByUserIdLoginProperties
(
user
.
getId
(),
properties
);
// String sessionId = sessionService.findSessionIdByUserIdAndMerchant(user.getId(), merchant);
if
(
StringUtils
.
isNotEmpty
(
sessionId
))
{
SessionStruct
sessionStruct
=
sessionService
.
findSessionBySessionId
(
sessionId
);
sessionStruct
.
setAttribute
(
"channelId"
,
String
.
valueOf
(
channelId
));
...
...
@@ -397,11 +403,7 @@ public class UserController implements IBaseController {
LOGGER
.
info
(
"用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}"
,
createdFrom
,
user
.
getPhoneNo
(),
appChannel
);
return
new
JsonResult
(
authBean
);
}
SessionStruct
sessionStruct
=
sessionService
.
createSessionAndPersist
(
user
,
(
session
)
->
{
session
.
setAttribute
(
"channelId"
,
String
.
valueOf
(
channelId
));
session
.
setAttribute
(
"createdFrom"
,
String
.
valueOf
(
createdFrom
));
session
.
setAttribute
(
"appChannel"
,
String
.
valueOf
(
appChannel
));
},
merchant
);
SessionStruct
sessionStruct
=
sessionService
.
createSessionAndPersist
(
user
,
properties
);
authBean
.
setPhoneNo
(
user
.
getPhoneNo
());
authBean
.
setToken
(
sessionStruct
.
getSid
());
LOGGER
.
info
(
"用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}"
,
createdFrom
,
user
.
getPhoneNo
(),
appChannel
);
...
...
src/main/java/cn/quantgroup/xyqb/model/LoginProperties.java
0 → 100644
View file @
1f22aa27
package
cn
.
quantgroup
.
xyqb
.
model
;
import
lombok.Data
;
/**
* Created by Miraculous on 2017/1/6.
*/
@Data
public
class
LoginProperties
{
private
Long
channelId
=
1L
;
private
Long
createdFrom
=
1L
;
private
String
appChannel
=
""
;
private
String
merchantName
;
}
src/main/java/cn/quantgroup/xyqb/model/session/SessionValue.java
View file @
1f22aa27
...
...
@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.model.session;
import
cn.quantgroup.xyqb.config.http.Timestamp2LongConverter
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.model.LoginProperties
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
...
...
@@ -22,6 +23,7 @@ public class SessionValue{
private
Timestamp
createdAt
;
@JSONField
(
serializeUsing
=
Timestamp2LongConverter
.
class
)
private
Timestamp
lastAccessTime
;
private
String
merchantName
;
private
LoginProperties
loginProperties
;
}
src/main/java/cn/quantgroup/xyqb/service/session/ISessionService.java
View file @
1f22aa27
...
...
@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.service.session;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.function.OneArgFunction
;
import
cn.quantgroup.xyqb.model.LoginProperties
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.session.SessionValue
;
...
...
@@ -10,14 +11,15 @@ import cn.quantgroup.xyqb.model.session.SessionValue;
* Created by 11 on 2016/12/28.
*/
public
interface
ISessionService
{
SessionStruct
createSessionAndPersistInCache
(
User
user
,
Merchant
merchant
);
SessionStruct
createSessionAndPersistInCache
(
User
user
,
LoginProperties
loginProperties
);
SessionStruct
createSessionAndPersist
(
User
user
,
OneArgFunction
<
SessionStruct
>
beforPersist
,
Merchant
merchant
);
SessionStruct
createSessionAndPersist
(
User
user
,
LoginProperties
loginProperties
);
String
findSessionIdByUserIdLoginProperties
(
Long
userId
,
LoginProperties
properties
);
String
findSessionIdByUserIdAndMerchant
(
Long
userId
,
Merchant
merchant
);
String
findSessionValueBySessionId
(
String
sessionId
);
SessionStruct
newSession
(
User
user
,
Merchant
merchant
);
SessionStruct
newSession
(
User
user
,
LoginProperties
properties
);
void
persistSession
(
String
token
,
SessionValue
sessionValue
);
SessionStruct
findSessionBySessionId
(
String
sessionId
);
...
...
src/main/java/cn/quantgroup/xyqb/service/session/impl/SessionServiceImpl.java
View file @
1f22aa27
...
...
@@ -4,6 +4,7 @@ import cn.quantgroup.xyqb.Constants;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.function.OneArgFunction
;
import
cn.quantgroup.xyqb.model.LoginProperties
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.session.SessionValue
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
...
...
@@ -32,39 +33,41 @@ public class SessionServiceImpl implements ISessionService{
private
RedisTemplate
<
String
,
String
>
stringRedisTemplate
;
@Override
public
SessionStruct
createSessionAndPersistInCache
(
User
user
,
Merchant
merchant
)
{
return
createSessionAndPersist
(
user
,
null
,
merchant
);
public
SessionStruct
createSessionAndPersistInCache
(
User
user
,
LoginProperties
properties
)
{
return
createSessionAndPersist
(
user
,
properties
);
}
@Override
public
SessionStruct
createSessionAndPersist
(
User
user
,
OneArgFunction
<
SessionStruct
>
beforPersist
,
Merchant
merchant
)
{
public
SessionStruct
createSessionAndPersist
(
User
user
,
LoginProperties
properties
)
{
SessionStruct
sessionStruct
;
//获取sessionid
String
sessionId
=
findSessionIdByUserId
AndMerchant
(
user
.
getId
(),
merchant
);
if
(
StringUtils
.
length
(
sessionId
)
==
36
)
{
String
sessionId
=
findSessionIdByUserId
LoginProperties
(
user
.
getId
(),
properties
);
if
(
StringUtils
.
length
(
sessionId
)
==
36
)
{
sessionStruct
=
new
SessionStruct
();
String
sessionValue
=
findSessionValueBySessionId
(
sessionId
);
if
(
StringUtils
.
isEmpty
(
sessionValue
))
{
sessionStruct
=
newSession
(
user
,
merchant
);
if
(
beforPersist
!=
null
)
{
beforPersist
.
apply
(
sessionStruct
);
}
if
(
StringUtils
.
isEmpty
(
sessionValue
))
{
sessionStruct
=
newSession
(
user
,
properties
);
persistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
}
sessionStruct
.
setSid
(
sessionId
);
}
else
{
sessionStruct
=
newSession
(
user
,
merchant
);
if
(
beforPersist
!=
null
)
{
beforPersist
.
apply
(
sessionStruct
);
}
}
else
{
sessionStruct
=
newSession
(
user
,
properties
);
persistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
}
return
sessionStruct
;
}
@Override
public
String
findSessionIdByUserIdAndMerchant
(
Long
userId
,
Merchant
merchant
)
{
return
stringRedisTemplate
.
opsForValue
().
get
(
Constants
.
Session
.
USER_SESSION_ID_CACHE
+
":"
+
merchant
.
getName
()
+
":"
+
userId
.
toString
());
public
String
findSessionIdByUserIdLoginProperties
(
Long
userId
,
LoginProperties
properties
)
{
return
stringRedisTemplate
.
opsForValue
().
get
(
generateLoginPropertiesKey
(
userId
,
properties
));
}
private
String
generateLoginPropertiesKey
(
Long
userId
,
LoginProperties
properties
)
{
if
(
"baitiao"
.
equals
(
properties
.
getMerchantName
()))
{
return
Constants
.
Session
.
USER_SESSION_ID_CACHE
+
":"
+
String
.
valueOf
(
userId
)
+
":"
+
properties
.
getMerchantName
()
+
":"
+
properties
.
getCreatedFrom
();
}
else
{
return
Constants
.
Session
.
USER_SESSION_ID_CACHE
+
":"
+
String
.
valueOf
(
userId
)
+
":"
+
properties
.
getMerchantName
();
}
}
@Override
...
...
@@ -74,7 +77,7 @@ public class SessionServiceImpl implements ISessionService{
}
@Override
public
SessionStruct
newSession
(
User
user
,
Merchant
merchant
){
public
SessionStruct
newSession
(
User
user
,
LoginProperties
loginProperties
){
Timestamp
now
=
new
Timestamp
(
System
.
currentTimeMillis
());
SessionStruct
sessionStruct
=
new
SessionStruct
();
SessionValue
sessionValue
=
new
SessionValue
();
...
...
@@ -82,7 +85,7 @@ public class SessionServiceImpl implements ISessionService{
sessionValue
.
setCreatedAt
(
now
);
sessionValue
.
setLastAccessTime
(
now
);
sessionValue
.
setUser
(
user
);
sessionValue
.
set
MerchantName
(
merchant
.
getName
()
);
sessionValue
.
set
LoginProperties
(
loginProperties
);
Map
<
String
,
String
>
values
=
new
HashMap
<>();
sessionValue
.
setValues
(
values
);
sessionStruct
.
setValues
(
sessionValue
);
...
...
@@ -96,8 +99,8 @@ public class SessionServiceImpl implements ISessionService{
String
json
=
JSON
.
toJSONString
(
sessionValue
);
stringRedisTemplate
.
opsForValue
().
set
(
Constants
.
Session
.
USER_SESSION_CACHE
+
token
,
json
,
Constants
.
Session
.
ONE_DAY
,
TimeUnit
.
SECONDS
);
stringRedisTemplate
.
opsForValue
().
set
(
Constants
.
Session
.
USER_SESSION_ID_CACHE
+
":"
+
sessionValue
.
getMerchantName
()
+
":"
+
sessionValue
.
getUser
().
getId
().
toString
()
,
token
,
Constants
.
Session
.
ONE_DAY
,
TimeUnit
.
SECONDS
);
String
key
=
generateLoginPropertiesKey
(
sessionValue
.
getUser
().
getId
(),
sessionValue
.
getLoginProperties
());
stringRedisTemplate
.
opsForValue
().
set
(
key
,
token
,
Constants
.
Session
.
ONE_DAY
,
TimeUnit
.
SECONDS
);
}
@Override
...
...
src/test/java/user/TestUserLogin.java
View file @
1f22aa27
...
...
@@ -2,30 +2,14 @@ package user;
import
cn.quantgroup.xyqb.Bootstrap
;
import
cn.quantgroup.xyqb.controller.internal.user.UserController
;
import
cn.quantgroup.xyqb.model.AuthBean
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.test.HttpClient
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.util.EntityUtils
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.test.SpringApplicationConfiguration
;
import
org.springframework.mock.web.MockHttpServletRequest
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
org.springframework.test.context.web.WebAppConfiguration
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Created by 11 on 2017/1/3.
*/
...
...
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