Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
V
volunteer_service
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
licc
volunteer_service
Commits
fa17e543
Commit
fa17e543
authored
Apr 10, 2021
by
xc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shiro限定并发登录人数
parent
349a8611
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
23 additions
and
4 deletions
+23
-4
KickoutSessionControlFilter.java
...ergy/service/shir/filter/KickoutSessionControlFilter.java
+6
-0
ShiroConfig.java
...c/main/java/cn/wisenergy/web/shir/config/ShiroConfig.java
+11
-1
application-dev.yml
wisenergy-web-admin/src/main/resources/application-dev.yml
+6
-3
No files found.
wisenergy-service/src/main/java/cn/wisenergy/service/shir/filter/KickoutSessionControlFilter.java
View file @
fa17e543
...
@@ -78,10 +78,12 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
...
@@ -78,10 +78,12 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
@Override
@Override
protected
boolean
onAccessDenied
(
ServletRequest
request
,
ServletResponse
response
)
throws
Exception
{
protected
boolean
onAccessDenied
(
ServletRequest
request
,
ServletResponse
response
)
throws
Exception
{
logger
.
info
(
"KickoutSessionControlFilter Not Login begin......."
);
Subject
subject
=
getSubject
(
request
,
response
);
Subject
subject
=
getSubject
(
request
,
response
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
// 没有登陆或没有设置“记住我”
// 没有登陆或没有设置“记住我”
if
(!
subject
.
isAuthenticated
()
&&
!
subject
.
isRemembered
())
{
if
(!
subject
.
isAuthenticated
()
&&
!
subject
.
isRemembered
())
{
logger
.
info
(
"KickoutSessionControlFilter isAuthenticated and isRemembered return true ......."
);
return
true
;
return
true
;
}
}
Session
session
=
subject
.
getSession
();
Session
session
=
subject
.
getSession
();
...
@@ -108,6 +110,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
...
@@ -108,6 +110,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
userId
=
staff
.
getId
();
userId
=
staff
.
getId
();
}
}
}
}
logger
.
info
(
"KickoutSessionControlFilter 如果被踢出了,直接退出,重定向到踢出后的地址-----"
);
//如果被踢出了,直接退出,重定向到踢出后的地址
//如果被踢出了,直接退出,重定向到踢出后的地址
if
(
session
.
getAttribute
(
"kickout"
)
!=
null
)
{
if
(
session
.
getAttribute
(
"kickout"
)
!=
null
)
{
logger
.
info
(
"------"
+
"踢出用户"
+
userId
+
"登录sessionId="
+
sessionId
+
"------"
);
logger
.
info
(
"------"
+
"踢出用户"
+
userId
+
"登录sessionId="
+
sessionId
+
"------"
);
...
@@ -123,6 +126,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
...
@@ -123,6 +126,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
out
(
response
,
map
);
out
(
response
,
map
);
return
false
;
return
false
;
}
}
logger
.
info
(
"KickoutSessionControlFilter Not Login end......."
);
return
true
;
return
true
;
}
}
...
@@ -142,6 +146,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
...
@@ -142,6 +146,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
public
void
changeSession
(
int
type
){
public
void
changeSession
(
int
type
){
logger
.
info
(
"KickoutSessionControlFilter changeSession begin.......type : "
+
type
);
Subject
subject
=
SecurityUtils
.
getSubject
();
Subject
subject
=
SecurityUtils
.
getSubject
();
Session
session
=
subject
.
getSession
();
Session
session
=
subject
.
getSession
();
session
.
setTimeout
(
300000
);
session
.
setTimeout
(
300000
);
...
@@ -183,6 +188,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
...
@@ -183,6 +188,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
}
}
// 更新redis中的用户登录队列
// 更新redis中的用户登录队列
redisTemplate
.
opsForValue
().
set
(
getRedisKickoutKey
(
userId
),
deque
,
EXPIRE_TIME
,
TimeUnit
.
SECONDS
);
redisTemplate
.
opsForValue
().
set
(
getRedisKickoutKey
(
userId
),
deque
,
EXPIRE_TIME
,
TimeUnit
.
SECONDS
);
logger
.
info
(
"KickoutSessionControlFilter changeSession end......."
);
}
}
String
getRedisKickoutKey
(
Integer
userId
)
{
String
getRedisKickoutKey
(
Integer
userId
)
{
...
...
wisenergy-web-admin/src/main/java/cn/wisenergy/web/shir/config/ShiroConfig.java
View file @
fa17e543
...
@@ -15,6 +15,7 @@ import org.apache.shiro.realm.Realm;
...
@@ -15,6 +15,7 @@ import org.apache.shiro.realm.Realm;
import
org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor
;
import
org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor
;
import
org.apache.shiro.spring.web.ShiroFilterFactoryBean
;
import
org.apache.shiro.spring.web.ShiroFilterFactoryBean
;
import
org.apache.shiro.web.mgt.DefaultWebSecurityManager
;
import
org.apache.shiro.web.mgt.DefaultWebSecurityManager
;
import
org.apache.shiro.web.servlet.SimpleCookie
;
import
org.crazycake.shiro.IRedisManager
;
import
org.crazycake.shiro.IRedisManager
;
import
org.crazycake.shiro.RedisCacheManager
;
import
org.crazycake.shiro.RedisCacheManager
;
import
org.crazycake.shiro.RedisManager
;
import
org.crazycake.shiro.RedisManager
;
...
@@ -45,7 +46,7 @@ public class ShiroConfig {
...
@@ -45,7 +46,7 @@ public class ShiroConfig {
@Value
(
"${spring.redis.password}"
)
@Value
(
"${spring.redis.password}"
)
private
String
password
;
private
String
password
;
//设置session会话过期时间为两小时
//设置session会话过期时间为两小时
private
static
final
Integer
expireTime
=
3600
*
2
;
private
static
final
Integer
expireTime
=
3600
000
*
2
;
/**
/**
...
@@ -175,9 +176,18 @@ public class ShiroConfig {
...
@@ -175,9 +176,18 @@ public class ShiroConfig {
public
MySessionManager
sessionManager
()
{
public
MySessionManager
sessionManager
()
{
MySessionManager
mySessionManager
=
new
MySessionManager
();
MySessionManager
mySessionManager
=
new
MySessionManager
();
mySessionManager
.
setSessionDAO
(
redisSessionDAO
());
mySessionManager
.
setSessionDAO
(
redisSessionDAO
());
mySessionManager
.
setSessionIdCookie
(
simpleCookie
());
return
mySessionManager
;
return
mySessionManager
;
}
}
@Bean
public
SimpleCookie
simpleCookie
(){
SimpleCookie
simpleCookie
=
new
SimpleCookie
();
simpleCookie
.
setPath
(
"/"
);
simpleCookie
.
setName
(
"SHIROSESSION"
);
return
simpleCookie
;
}
/**
/**
* 配置shiro redisManager
* 配置shiro redisManager
...
...
wisenergy-web-admin/src/main/resources/application-dev.yml
View file @
fa17e543
...
@@ -3,10 +3,13 @@ spring:
...
@@ -3,10 +3,13 @@ spring:
type
:
com.alibaba.druid.pool.DruidDataSource
type
:
com.alibaba.druid.pool.DruidDataSource
druid
:
druid
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
driver-class-name
:
com.mysql.cj.jdbc.Driver
url
:
jdbc:mysql://192.168.110.165:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
#
url: jdbc:mysql://192.168.110.165:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
#url: jdbc:mysql://localhost:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
#url: jdbc:mysql://localhost:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
username
:
root
url
:
jdbc:mysql://rm-bp1i44rtb091fk06coo.mysql.rds.aliyuncs.com:3306/volunteer?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
password
:
adm4HYservice$
# username: root
# password: adm4HYservice$
username
:
alyxcroot
password
:
alyXCRoot123
initial-size
:
10
initial-size
:
10
max-active
:
100
max-active
:
100
min-idle
:
10
min-idle
:
10
...
...
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