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
4b5125ba
Commit
4b5125ba
authored
Dec 28, 2016
by
lee_mingzhu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add session
parent
0068fe7f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
145 additions
and
1 deletion
+145
-1
UserController.java
...ntgroup/xyqb/controller/internal/user/UserController.java
+41
-1
ISessionService.java
...a/cn/quantgroup/xyqb/service/session/ISessionService.java
+17
-0
SessionServiceImpl.java
...ntgroup/xyqb/service/session/impl/SessionServiceImpl.java
+87
-0
No files found.
src/main/java/cn/quantgroup/xyqb/controller/internal/user/UserController.java
View file @
4b5125ba
...
@@ -9,11 +9,15 @@ import cn.quantgroup.xyqb.exception.UserNotExistException;
...
@@ -9,11 +9,15 @@ import cn.quantgroup.xyqb.exception.UserNotExistException;
import
cn.quantgroup.xyqb.model.AuthBean
;
import
cn.quantgroup.xyqb.model.AuthBean
;
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.session.SessionStruct
;
import
cn.quantgroup.xyqb.repository.IUserDetailRepository
;
import
cn.quantgroup.xyqb.repository.IUserDetailRepository
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.sms.ISmsService
;
import
cn.quantgroup.xyqb.service.sms.ISmsService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.tomcat.util.security.MD5Encoder
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -26,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestParam;
...
@@ -26,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.UnsupportedEncodingException
;
import
java.security.Principal
;
import
java.security.Principal
;
import
java.util.Random
;
import
java.util.Random
;
...
@@ -41,6 +46,8 @@ public class UserController implements IBaseController {
...
@@ -41,6 +46,8 @@ public class UserController implements IBaseController {
private
static
final
int
SMS_VERIFICATION_MAXLEN
=
6
;
private
static
final
int
SMS_VERIFICATION_MAXLEN
=
6
;
public
final
String
pwdSalt
=
"_lkb"
;
@Autowired
@Autowired
private
IUserService
userService
;
private
IUserService
userService
;
...
@@ -59,6 +66,9 @@ public class UserController implements IBaseController {
...
@@ -59,6 +66,9 @@ public class UserController implements IBaseController {
@Autowired
@Autowired
private
ISmsService
smsService
;
private
ISmsService
smsService
;
@Autowired
private
ISessionService
sessionService
;
@Autowired
@Autowired
private
IUserDetailRepository
userDetailRepository
;
private
IUserDetailRepository
userDetailRepository
;
...
@@ -68,8 +78,38 @@ public class UserController implements IBaseController {
...
@@ -68,8 +78,38 @@ public class UserController implements IBaseController {
@RequestMapping
(
"/login"
)
@RequestMapping
(
"/login"
)
public
JsonResult
login2
(
HttpServletRequest
request
)
{
public
JsonResult
login2
(
HttpServletRequest
request
)
{
String
credential
=
request
.
getHeader
(
"authorization"
);
if
(!
credential
.
startsWith
(
"Basic "
)){
return
JsonResult
.
buildErrorStateResult
(
"用户名或密码不正确"
,
null
);
}
credential
=
credential
.
substring
(
"Basic "
.
length
(),
credential
.
length
());
byte
[]
buf
=
Base64
.
decodeBase64
(
credential
);
String
bufStr
=
""
;
try
{
bufStr
=
new
String
(
buf
,
"UTF-8"
);
}
catch
(
UnsupportedEncodingException
e
){
LOGGER
.
error
(
"不支持的编码: "
,
e
);
}
String
[]
credentialArr
=
bufStr
.
split
(
":"
);
if
(
credential
.
length
()
!=
2
){
return
JsonResult
.
buildErrorStateResult
(
"用户名或密码不正确."
,
null
);
}
String
userName
=
credentialArr
[
0
];
String
pass
=
credentialArr
[
1
];
User
user
=
userService
.
findByPhone
(
userName
);
if
(
user
==
null
){
return
JsonResult
.
buildErrorStateResult
(
"用户名或密码不正确"
,
null
);
}
//验证密码
validatePassword
(
pass
,
user
.
getPassword
());
//找到用户
SessionStruct
sessionStruct
=
sessionService
.
createSession
(
user
);
return
JsonResult
.
buildSuccessResult
(
"success"
,
sessionStruct
);
}
return
null
;
private
boolean
validatePassword
(
String
paramPass
,
String
findPass
){
String
hashPass
=
MD5Encoder
.
encode
((
paramPass
.
toLowerCase
()
+
pwdSalt
).
getBytes
());
return
hashPass
==
findPass
;
}
}
/**
/**
...
...
src/main/java/cn/quantgroup/xyqb/service/session/ISessionService.java
0 → 100644
View file @
4b5125ba
package
cn
.
quantgroup
.
xyqb
.
service
.
session
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.session.SessionValue
;
/**
* Created by 11 on 2016/12/28.
*/
public
interface
ISessionService
{
SessionStruct
createSession
(
User
user
);
String
findSessionIdByUserId
(
Long
userId
);
JsonResult
findSessionValueBySessionId
(
String
sessionId
);
SessionStruct
newSession
(
User
user
);
JsonResult
PersistSession
(
String
token
,
SessionValue
sessionValue
);
}
src/main/java/cn/quantgroup/xyqb/service/session/impl/SessionServiceImpl.java
0 → 100644
View file @
4b5125ba
package
cn
.
quantgroup
.
xyqb
.
service
.
session
.
impl
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.session.SessionValue
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
java.sql.Timestamp
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.UUID
;
/**
* Created by 11 on 2016/12/28.
*/
public
class
SessionServiceImpl
implements
ISessionService
{
public
final
int
oneDay
=
24
*
60
*
60
;
@Autowired
@Qualifier
(
"stringRedisTemplate"
)
private
RedisTemplate
<
String
,
String
>
stringRedisTemplate
;
@Override
public
SessionStruct
createSession
(
User
user
)
{
SessionStruct
sessionStruct
;
//获取sessionid
String
sessionId
=
findSessionIdByUserId
(
user
.
getId
());
if
(
sessionId
.
length
()
==
36
){
sessionStruct
=
new
SessionStruct
();
//TODO 不确定
JsonResult
result
=
findSessionValueBySessionId
(
sessionId
);
if
(
result
!=
null
){
sessionStruct
=
newSession
(
user
);
PersistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
}
sessionStruct
.
setSid
(
sessionId
);
}
else
{
sessionStruct
=
newSession
(
user
);
PersistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
}
return
sessionStruct
;
}
@Override
public
String
findSessionIdByUserId
(
Long
userId
)
{
//TODO 暂时写死
return
stringRedisTemplate
.
opsForValue
().
get
(
"userid-sessionvalue:cache:"
+
userId
.
toString
());
}
@Override
public
JsonResult
findSessionValueBySessionId
(
String
sessionId
){
String
result
=
stringRedisTemplate
.
opsForValue
().
get
(
"userid-sessionvalue:cache:"
+
sessionId
);
if
(
result
.
length
()
==
0
){
return
JsonResult
.
buildErrorStateResult
(
"wrong session Id"
,
null
,
0001
L
);
}
return
null
;
}
@Override
public
SessionStruct
newSession
(
User
user
){
Timestamp
now
=
new
Timestamp
(
System
.
currentTimeMillis
());
SessionStruct
sessionStruct
=
new
SessionStruct
();
SessionValue
sessionValue
=
new
SessionValue
();
sessionStruct
.
setSid
(
UUID
.
randomUUID
().
toString
());
sessionValue
.
setCreatedAt
(
now
);
sessionValue
.
setLastAccessTime
(
now
);
sessionValue
.
setUser
(
user
);
Map
<
String
,
Object
>
values
=
new
HashMap
();
sessionValue
.
setValues
(
values
);
sessionStruct
.
setValues
(
sessionValue
);
return
sessionStruct
;
}
public
JsonResult
PersistSession
(
String
token
,
SessionValue
sessionValue
){
Timestamp
current
=
new
Timestamp
(
System
.
currentTimeMillis
());
sessionValue
.
setLastAccessTime
(
current
);
String
json
=
Constants
.
GSON
.
toJson
(
sessionValue
);
stringRedisTemplate
.
opsForValue
().
set
(
"userid-sessionvalue:cache:"
+
token
,
json
,
oneDay
);
return
JsonResult
.
buildSuccessResult
(
"持久化session success."
,
null
);
}
}
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