Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sv-springboot
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bsoft
sv-springboot
Commits
11487053
Commit
11487053
authored
Nov 14, 2020
by
289446646@qq.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
单点登录
parent
ae32db8e
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
142 additions
and
4 deletions
+142
-4
hs-api/src/main/java/com/hs/api/common/Constants.java
+2
-0
hs-api/src/main/java/com/hs/api/common/utils/SsoUtil.java
+77
-0
hs-api/src/main/java/com/hs/api/common/utils/TokenUtil.java
+3
-2
hs-api/src/main/java/com/hs/api/controller/SsoController.java
+49
-0
hs-api/src/main/resources/application.properties
+11
-2
No files found.
hs-api/src/main/java/com/hs/api/common/Constants.java
View file @
11487053
...
...
@@ -2,4 +2,6 @@ package com.hs.api.common;
public
interface
Constants
{
String
TOKEN_KEY
=
"Authorization"
;
String
SYS_TOKEM_PRIFIX
=
"DGR_"
;
}
hs-api/src/main/java/com/hs/api/common/utils/SsoUtil.java
0 → 100644
View file @
11487053
package
com
.
hs
.
api
.
common
.
utils
;
import
com.alibaba.fastjson.JSONObject
;
import
com.hs.common.utils.StringUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.BufferedReader
;
import
java.io.InputStreamReader
;
import
java.net.URL
;
import
java.net.URLConnection
;
public
class
SsoUtil
{
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
SsoUtil
.
class
);
/**
* 校验token
* @param token
* @return
*/
public
static
boolean
checkSsoToken
(
String
uri
,
String
token
)
{
JSONObject
jsonObject
=
null
;
if
(
StringUtil
.
isNullOrEmpty
(
token
))
{
return
false
;
}
String
url
=
uri
+
"?token="
+
token
;
String
result
=
""
;
try
{
result
=
SsoUtil
.
doGet
(
url
);
log
.
info
(
"checkSsoToken result={}"
,
result
);
jsonObject
=
JSONObject
.
parseObject
(
result
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
if
(
jsonObject
==
null
){
return
false
;
}
return
true
;
}
//发送http的get请求
public
static
String
doGet
(
String
url
)
{
String
result
=
""
;
BufferedReader
in
=
null
;
try
{
String
urlstring
=
url
;
URL
realurl
=
new
URL
(
urlstring
);
System
.
out
.
println
(
"请求的服务器主机域名:"
+
realurl
.
getHost
().
toString
());
//打开与此URL的连接
URLConnection
connection
=
realurl
.
openConnection
();
//设置请求连接时间和读取数据时间
connection
.
setConnectTimeout
(
3000
);
connection
.
setReadTimeout
(
7000
);
//建立实际的连接
connection
.
connect
();
//读取获取的数据
in
=
new
BufferedReader
(
new
InputStreamReader
(
connection
.
getInputStream
()));
String
line
;
while
((
line
=
in
.
readLine
())
!=
null
)
{
result
+=
line
;
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"发送GET请求出现异常!"
+
e
);
e
.
printStackTrace
();
}
finally
{
try
{
if
(
in
!=
null
)
{
in
.
close
();
}
}
catch
(
Exception
e2
)
{
System
.
out
.
println
(
"关闭请求流出现异常!"
+
e2
);
e2
.
printStackTrace
();
}
}
return
result
;
}
}
hs-api/src/main/java/com/hs/api/common/utils/TokenUtil.java
View file @
11487053
package
com
.
hs
.
api
.
common
.
utils
;
import
com.hs.api.common.Constants
;
import
com.hs.api.model.SysUser
;
import
com.hs.api.model.TokenResult
;
import
com.hs.api.model.TokenProperties
;
...
...
@@ -20,7 +21,7 @@ public class TokenUtil {
*/
public
static
String
getToken
(
String
secret
,
SysUser
user
)
{
String
time
=
String
.
valueOf
(
System
.
currentTimeMillis
());
String
token
=
JWTUtil
.
create
(
secret
,
time
,
String
.
valueOf
(
user
.
getId
()));
String
token
=
Constants
.
SYS_TOKEM_PRIFIX
+
JWTUtil
.
create
(
secret
,
time
,
String
.
valueOf
(
user
.
getId
()));
RedisUtil
.
set
(
token
,
user
,
TOKEN_TIME_OUT
);
return
token
;
}
...
...
@@ -63,7 +64,7 @@ public class TokenUtil {
*/
public
static
boolean
checkToken
(
String
token
)
{
SysUser
user
=
(
SysUser
)
RedisUtil
.
get
(
token
);
boolean
result
=
user
!=
null
&&
JWTUtil
.
verifier
(
token
,
user
.
getPassword
());
boolean
result
=
user
!=
null
&&
JWTUtil
.
verifier
(
token
.
replaceAll
(
Constants
.
SYS_TOKEM_PRIFIX
,
""
)
,
user
.
getPassword
());
if
(
result
){
RedisUtil
.
expire
(
token
,
TOKEN_TIME_OUT
);
}
...
...
hs-api/src/main/java/com/hs/api/controller/SsoController.java
0 → 100644
View file @
11487053
package
com
.
hs
.
api
.
controller
;
import
com.hs.api.common.utils.SsoUtil
;
import
com.hs.common.utils.StringUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.models.Model
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponseWrapper
;
import
java.io.IOException
;
import
java.net.URLEncoder
;
@RestController
@RequestMapping
(
"/page"
)
@Api
(
tags
=
{
"登录"
})
public
class
SsoController
{
@Value
(
"${indexUri}"
)
private
String
indexUri
;
@Value
(
"${sso.checkUri}"
)
private
String
ssoCheckUri
;
@Value
(
"${sso.loginUri}"
)
private
String
ssoLoginUri
;
@GetMapping
(
"/index"
)
public
String
Login
(
Model
model
,
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
{
String
token
=
request
.
getParameter
(
"Token"
);
if
(
StringUtil
.
isNullOrEmpty
(
token
))
{
token
=
request
.
getParameter
(
"token"
);
}
//验证token是否有效,有效,则跳转至首页
HttpServletResponseWrapper
wrapper
=
new
HttpServletResponseWrapper
(
response
);
if
(
SsoUtil
.
checkSsoToken
(
ssoCheckUri
,
token
)){
//验证通过,跳转首页
wrapper
.
sendRedirect
(
indexUri
+
"?Token="
+
token
);
}
else
{
//不通过,跳转sso登录页,并且传参首页地址
wrapper
.
sendRedirect
(
ssoLoginUri
+
"?URL="
+
URLEncoder
.
encode
(
indexUri
,
"UTF-8"
));
}
return
""
;
}
}
hs-api/src/main/resources/application.properties
View file @
11487053
...
...
@@ -24,4 +24,13 @@ mybatis.configuration.call-setters-on-nulls=true
token.url
=
http://192.192.192.97:8001/api/tokenapi/GetUser?token=
token.interface-check
=
true
token.description
=
${token.url}'s${token.interface-check}
\ No newline at end of file
token.description
=
${token.url}'s${token.interface-check}
# 单点登录完成后跳转到我们的首页地址
indexUri
=
http://www.baidu.com/
# 验证平台单点登录token的地址和登录地址
sso.checkUri
=
sso.loginUri
=
http://yihang.work/wdzx/index.html
spring.mvc.view.prefix
=
/WEB-INF/pages/
spring.mvc.view.suffix
=
.html
\ No newline at end of file
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