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
2a78d659
Commit
2a78d659
authored
Dec 30, 2016
by
zhouqian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor
parent
270c84d0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
78 additions
and
71 deletions
+78
-71
UserController.java
...ntgroup/xyqb/controller/internal/user/UserController.java
+78
-71
No files found.
src/main/java/cn/quantgroup/xyqb/controller/internal/user/UserController.java
View file @
2a78d659
...
...
@@ -60,59 +60,20 @@ public class UserController implements IBaseController {
@Autowired
private
IUserDetailService
userDetailService
;
/*@Autowired
private IUserDetailRepository userDetailRepository;*/
private
static
final
char
[]
PWD_BASE
=
{
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
,
'g'
,
'h'
,
'i'
,
'j'
,
'k'
,
'l'
,
'm'
,
'n'
,
'o'
,
'p'
,
'q'
,
'r'
,
's'
,
't'
,
'u'
,
'v'
,
'w'
,
'x'
,
'y'
,
'z'
,
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
};
@RequestMapping
(
"/login"
)
public
JsonResult
login2
(
@RequestParam
(
required
=
false
,
defaultValue
=
""
)
String
userId
,
HttpServletRequest
request
)
{
AuthBean
authBean
=
new
AuthBean
();
if
(!
StringUtils
.
isEmpty
(
userId
)){
//查询用户,存在则保存用户session信息,userId为uuid
User
user
=
userService
.
findByUuidInDb
(
userId
);
//用户信息存在,更新session中的最后访问时间,重新写入缓存.
if
(
null
!=
user
){
SessionStruct
sessionStruct
=
sessionService
.
createSessionAndPersistInCache
(
user
);
authBean
.
setPhoneNo
(
user
.
getPhoneNo
());
authBean
.
setToken
(
sessionStruct
.
getSid
());
}
}
else
{
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
(
credentialArr
.
length
!=
2
){
return
JsonResult
.
buildErrorStateResult
(
"用户名或密码不正确."
,
null
);
}
String
userName
=
credentialArr
[
0
];
String
pass
=
credentialArr
[
1
];
User
user
=
userService
.
findByPhoneWithCache
(
userName
);
if
(
user
==
null
){
return
JsonResult
.
buildErrorStateResult
(
"用户名或密码不正确"
,
null
);
}
//验证密码
if
(!
validatePassword
(
pass
,
user
.
getPassword
()))
{
return
JsonResult
.
buildErrorStateResult
(
"用户名或密码不正确"
,
null
);
}
//找到用户
SessionStruct
sessionStruct
=
sessionService
.
createSessionAndPersistInCache
(
user
);
LOGGER
.
info
(
"用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}"
,
getCreatedFrom
(),
user
.
getPhoneNo
(),
getAppChannel
());
authBean
.
setPhoneNo
(
user
.
getPhoneNo
());
authBean
.
setToken
(
sessionStruct
.
getSid
());
public
JsonResult
login
(
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
appChannel
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
createdFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
""
)
String
userId
,
HttpServletRequest
request
)
{
if
(!
StringUtils
.
isEmpty
(
userId
)
&&
userId
.
length
()
>
10
)
{
return
loginWithUserId
(
channelId
,
appChannel
,
createdFrom
,
userId
);
}
else
{
return
loginWithHttpBasic
(
channelId
,
appChannel
,
createdFrom
,
request
);
}
return
new
JsonResult
(
authBean
);
}
@RequestMapping
(
"/test"
)
...
...
@@ -121,10 +82,6 @@ public class UserController implements IBaseController {
return
JsonResult
.
buildSuccessResult
(
""
,
getCurrentUser
());
}
private
boolean
validatePassword
(
String
paramPass
,
String
targetPassword
){
return
StringUtils
.
defaultString
(
targetPassword
,
""
).
equals
(
PasswordUtil
.
MD5
(
paramPass
.
toLowerCase
()
+
pwdSalt
));
}
@RequestMapping
(
"/login/fast"
)
public
JsonResult
loginFast
(
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
appChannel
,
...
...
@@ -146,12 +103,7 @@ public class UserController implements IBaseController {
if
(
StringUtils
.
isBlank
(
sessionId
)){
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
SessionStruct
sessionStruct
=
sessionService
.
createSessionAndPersist
(
user
,
(
session
)
->
{
session
.
setAttribute
(
"channelId"
,
String
.
valueOf
(
channelId
));
session
.
setAttribute
(
"createdFrom"
,
String
.
valueOf
(
createdFrom
));
session
.
setAttribute
(
"appChannel"
,
String
.
valueOf
(
appChannel
));
});
return
returnSuccessResult
(
phoneNo
,
sessionStruct
.
getSid
());
return
createSession
(
channelId
,
createdFrom
,
appChannel
,
user
);
}
/**
...
...
@@ -160,7 +112,7 @@ public class UserController implements IBaseController {
* @return
*/
private
Map
<
String
,
JsonResult
>
getHeaderParam
(
HttpServletRequest
request
){
Map
<
String
,
JsonResult
>
result
=
new
HashMap
();
Map
<
String
,
JsonResult
>
result
=
new
HashMap
<>
();
String
verificationHeader
=
"Verification "
;
String
credential
=
request
.
getHeader
(
"authorization"
);
if
(
StringUtils
.
isBlank
(
credential
)){
...
...
@@ -195,19 +147,6 @@ public class UserController implements IBaseController {
return
result
;
}
/**
* 认证通过吐出的成功结果
* @param phoneNo
* @param token
* @return
*/
private
JsonResult
returnSuccessResult
(
String
phoneNo
,
String
token
){
AuthBean
authBean
=
new
AuthBean
();
authBean
.
setPhoneNo
(
phoneNo
);
authBean
.
setToken
(
token
);
return
new
JsonResult
(
authBean
);
}
/**
* 用户快速注册
*
...
...
@@ -425,4 +364,72 @@ public class UserController implements IBaseController {
}
private
JsonResult
loginWithHttpBasic
(
Long
channelId
,
String
appChannel
,
Long
createdFrom
,
HttpServletRequest
request
)
{
User
user
=
verificateUserNameAndPassword
(
request
);
if
(
user
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"用户名或密码不正确"
,
null
);
}
else
{
return
createSession
(
channelId
,
createdFrom
,
appChannel
,
user
);
}
}
private
JsonResult
createSession
(
Long
channelId
,
Long
createdFrom
,
String
appChannel
,
User
user
)
{
AuthBean
authBean
=
new
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
));
});
authBean
.
setPhoneNo
(
user
.
getPhoneNo
());
authBean
.
setToken
(
sessionStruct
.
getSid
());
LOGGER
.
info
(
"用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}"
,
createdFrom
,
user
.
getPhoneNo
(),
appChannel
);
return
new
JsonResult
(
authBean
);
}
private
User
verificateUserNameAndPassword
(
HttpServletRequest
request
)
{
String
credential
=
request
.
getHeader
(
"authorization"
);
if
(!
credential
.
startsWith
(
"Basic "
)){
return
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
(
credentialArr
.
length
!=
2
){
return
null
;
}
String
userName
=
credentialArr
[
0
];
String
pass
=
credentialArr
[
1
];
User
user
=
userService
.
findByPhoneWithCache
(
userName
);
if
(
user
==
null
){
return
null
;
}
//验证密码
if
(!
validatePassword
(
pass
,
user
.
getPassword
()))
{
return
null
;
}
return
user
;
}
private
boolean
validatePassword
(
String
paramPass
,
String
targetPassword
){
return
StringUtils
.
defaultString
(
targetPassword
,
""
).
equals
(
PasswordUtil
.
MD5
(
paramPass
.
toLowerCase
()
+
pwdSalt
));
}
private
JsonResult
loginWithUserId
(
Long
channelId
,
String
appChannel
,
Long
createdFrom
,
String
userId
)
{
//查询用户,存在则保存用户session信息,userId为uuid
User
user
=
userService
.
findByUuidInDb
(
userId
);
//用户信息存在,更新session中的最后访问时间,重新写入缓存.
if
(
null
!=
user
)
{
return
createSession
(
channelId
,
createdFrom
,
appChannel
,
user
);
}
else
{
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
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