Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Eladmin
Commits
8c4fd97e
"eladmin-common/vscode:/vscode.git/clone" did not exist on "7c8a9bd04f5a5dbf6e7e8be0db62a34da7109c54"
Commit
8c4fd97e
authored
Jan 20, 2019
by
郑杰
Browse files
v1.5 beta版发布,详细查看发行版说明
parent
b066bb99
Changes
198
Hide whitespace changes
Inline
Side-by-side
src/main/java/me/zhengjie/quartz/service/QuartzJobService.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/service/QuartzJobService.java
View file @
8c4fd97e
package
me.zhengjie.quartz.service
;
package
me.zhengjie.
modules.
quartz.service
;
import
me.zhengjie.quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.
quartz.domain.QuartzJob
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.cache.annotation.Cacheable
;
/**
/**
* @author
郑杰
* @author
jie
* @date 201
8/10/05 19:17:38
* @date 201
9-01-07
*/
*/
@CacheConfig
(
cacheNames
=
"quartzJob"
)
@CacheConfig
(
cacheNames
=
"quartzJob"
)
public
interface
QuartzJobService
{
public
interface
QuartzJobService
{
...
...
src/main/java/me/zhengjie/quartz/service/impl/QuartzJobServiceImpl.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/service/impl/QuartzJobServiceImpl.java
View file @
8c4fd97e
package
me.zhengjie.quartz.service.impl
;
package
me.zhengjie.
modules.
quartz.service.impl
;
import
me.zhengjie.
common.
exception.BadRequestException
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.
common.utils.ValidationUtil
;
import
me.zhengjie.
modules.quartz.domain.QuartzJob
;
import
me.zhengjie.
quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.quartz.repository.QuartzJobRepository
;
import
me.zhengjie.
quartz.repository.QuartzJobRepository
;
import
me.zhengjie.
modules.quartz.service.QuartzJobService
;
import
me.zhengjie.
quartz.service.QuartzJobServic
e
;
import
me.zhengjie.
modules.quartz.utils.QuartzManag
e
;
import
me.zhengjie.
quartz.utils.QuartzManage
;
import
me.zhengjie.
utils.ValidationUtil
;
import
org.quartz.CronExpression
;
import
org.quartz.CronExpression
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Optional
;
import
java.util.Optional
;
/**
/**
...
...
src/main/java/me/zhengjie/quartz/service/query/QuartzJobQueryService.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/service/query/QuartzJobQueryService.java
View file @
8c4fd97e
package
me.zhengjie.quartz.service.query
;
package
me.zhengjie.
modules.
quartz.service.query
;
import
me.zhengjie.
common.utils.PageUtil
;
import
me.zhengjie.
modules.quartz.domain.QuartzJob
;
import
me.zhengjie.
quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.quartz.repository.QuartzJobRepository
;
import
me.zhengjie.
quartz.repository.QuartzJobRepository
;
import
me.zhengjie.
utils.PageUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.cache.annotation.Cacheable
;
...
...
src/main/java/me/zhengjie/quartz/service/query/QuartzLogQueryService.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/service/query/QuartzLogQueryService.java
View file @
8c4fd97e
package
me.zhengjie.quartz.service.query
;
package
me.zhengjie.
modules.
quartz.service.query
;
import
me.zhengjie.
common.utils.PageUtil
;
import
me.zhengjie.
modules.quartz.domain.QuartzLog
;
import
me.zhengjie.
quartz.domain.QuartzLog
;
import
me.zhengjie.
modules.quartz.repository.QuartzLogRepository
;
import
me.zhengjie.
quartz.repository.QuartzLogRepository
;
import
me.zhengjie.
utils.PageUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.data.jpa.domain.Specification
;
...
...
src/main/java/me/zhengjie/quartz/task/TestTask.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/task/TestTask.java
View file @
8c4fd97e
package
me.zhengjie.quartz.task
;
package
me.zhengjie.
modules.
quartz.task
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
...
src/main/java/me/zhengjie/quartz/task/VisitsTask.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/task/VisitsTask.java
View file @
8c4fd97e
package
me.zhengjie.quartz.task
;
package
me.zhengjie.
modules.
quartz.task
;
import
me.zhengjie.monitor.service.VisitsService
;
import
me.zhengjie.
modules.
monitor.service.VisitsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
...
src/main/java/me/zhengjie/quartz/utils/ExecutionJob.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/utils/ExecutionJob.java
View file @
8c4fd97e
package
me.zhengjie.quartz.utils
;
package
me.zhengjie.
modules.
quartz.utils
;
import
me.zhengjie.
common.utils.SpringContextHolder
;
import
me.zhengjie.
modules.quartz.domain.QuartzJob
;
import
me.zhengjie.
common.utils.ThrowableUtil
;
import
me.zhengjie.
modules.quartz.domain.QuartzLog
;
import
me.zhengjie.
quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.quartz.repository.QuartzLogRepository
;
import
me.zhengjie.
quartz.domain.QuartzLog
;
import
me.zhengjie.
modules.quartz.service.QuartzJobService
;
import
me.zhengjie.
quartz.repository.QuartzLogRepository
;
import
me.zhengjie.
utils.SpringContextHolder
;
import
me.zhengjie.
quartz.service.QuartzJobService
;
import
me.zhengjie.
utils.ThrowableUtil
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.Scheduler
;
import
org.quartz.Scheduler
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
...
src/main/java/me/zhengjie/quartz/utils/QuartzManage.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/utils/QuartzManage.java
View file @
8c4fd97e
package
me.zhengjie.quartz.utils
;
package
me.zhengjie.
modules.
quartz.utils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.
common.
exception.BadRequestException
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.
quartz.domain.QuartzJob
;
import
org.quartz.*
;
import
org.quartz.*
;
import
org.quartz.impl.triggers.CronTriggerImpl
;
import
org.quartz.impl.triggers.CronTriggerImpl
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -50,7 +50,7 @@ public class QuartzManage {
...
@@ -50,7 +50,7 @@ public class QuartzManage {
}
}
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"创建定时任务失败"
,
e
);
log
.
error
(
"创建定时任务失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"创建定时任务失败"
);
}
}
}
}
...
@@ -63,6 +63,11 @@ public class QuartzManage {
...
@@ -63,6 +63,11 @@ public class QuartzManage {
try
{
try
{
TriggerKey
triggerKey
=
TriggerKey
.
triggerKey
(
JOB_NAME
+
quartzJob
.
getId
());
TriggerKey
triggerKey
=
TriggerKey
.
triggerKey
(
JOB_NAME
+
quartzJob
.
getId
());
CronTrigger
trigger
=
(
CronTrigger
)
scheduler
.
getTrigger
(
triggerKey
);
CronTrigger
trigger
=
(
CronTrigger
)
scheduler
.
getTrigger
(
triggerKey
);
// 如果不存在则创建一个定时任务
if
(
trigger
==
null
){
addJob
(
quartzJob
);
trigger
=
(
CronTrigger
)
scheduler
.
getTrigger
(
triggerKey
);
}
CronScheduleBuilder
scheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
quartzJob
.
getCronExpression
());
CronScheduleBuilder
scheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
quartzJob
.
getCronExpression
());
trigger
=
trigger
.
getTriggerBuilder
().
withIdentity
(
triggerKey
).
withSchedule
(
scheduleBuilder
).
build
();
trigger
=
trigger
.
getTriggerBuilder
().
withIdentity
(
triggerKey
).
withSchedule
(
scheduleBuilder
).
build
();
//重置启动时间
//重置启动时间
...
@@ -75,7 +80,7 @@ public class QuartzManage {
...
@@ -75,7 +80,7 @@ public class QuartzManage {
}
}
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"更新定时任务失败"
,
e
);
log
.
error
(
"更新定时任务失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"更新定时任务失败"
);
}
}
}
}
...
@@ -91,7 +96,7 @@ public class QuartzManage {
...
@@ -91,7 +96,7 @@ public class QuartzManage {
scheduler
.
deleteJob
(
jobKey
);
scheduler
.
deleteJob
(
jobKey
);
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"删除定时任务失败"
,
e
);
log
.
error
(
"删除定时任务失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"删除定时任务失败"
);
}
}
}
}
...
@@ -112,7 +117,7 @@ public class QuartzManage {
...
@@ -112,7 +117,7 @@ public class QuartzManage {
scheduler
.
resumeJob
(
jobKey
);
scheduler
.
resumeJob
(
jobKey
);
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"恢复定时任务失败"
,
e
);
log
.
error
(
"恢复定时任务失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"恢复定时任务失败"
);
}
}
}
}
...
@@ -135,7 +140,7 @@ public class QuartzManage {
...
@@ -135,7 +140,7 @@ public class QuartzManage {
scheduler
.
triggerJob
(
jobKey
,
dataMap
);
scheduler
.
triggerJob
(
jobKey
,
dataMap
);
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"定时任务执行失败"
,
e
);
log
.
error
(
"定时任务执行失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"定时任务执行失败"
);
}
}
}
}
...
@@ -150,7 +155,7 @@ public class QuartzManage {
...
@@ -150,7 +155,7 @@ public class QuartzManage {
scheduler
.
pauseJob
(
jobKey
);
scheduler
.
pauseJob
(
jobKey
);
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"定时任务暂停失败"
,
e
);
log
.
error
(
"定时任务暂停失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"定时任务暂停失败"
);
}
}
}
}
}
}
src/main/java/me/zhengjie/quartz/utils/QuartzRunnable.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/utils/QuartzRunnable.java
View file @
8c4fd97e
package
me.zhengjie.quartz.utils
;
package
me.zhengjie.
modules.
quartz.utils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.
common.
utils.SpringContextHolder
;
import
me.zhengjie.utils.SpringContextHolder
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.util.ReflectionUtils
;
import
org.springframework.util.ReflectionUtils
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
...
...
src/main/java/me/zhengjie/
core
/config/
Web
SecurityConfig.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/config/SecurityConfig.java
View file @
8c4fd97e
package
me.zhengjie.
core
.config
;
package
me.zhengjie.
modules.security
.config
;
import
me.zhengjie.
core
.security.JwtAuthenticationEntryPoint
;
import
me.zhengjie.
modules.security
.security.JwtAuthenticationEntryPoint
;
import
me.zhengjie.
core
.security.JwtAuthorizationTokenFilter
;
import
me.zhengjie.
modules.security
.security.JwtAuthorizationTokenFilter
;
import
me.zhengjie.
core
.service.JwtUserDetailsService
;
import
me.zhengjie.
modules.security
.service.JwtUserDetailsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
...
@@ -23,7 +23,7 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
...
@@ -23,7 +23,7 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
@Configuration
@Configuration
@EnableWebSecurity
@EnableWebSecurity
@EnableGlobalMethodSecurity
(
prePostEnabled
=
true
)
@EnableGlobalMethodSecurity
(
prePostEnabled
=
true
)
public
class
Web
SecurityConfig
extends
WebSecurityConfigurerAdapter
{
public
class
SecurityConfig
extends
WebSecurityConfigurerAdapter
{
@Autowired
@Autowired
private
JwtAuthenticationEntryPoint
unauthorizedHandler
;
private
JwtAuthenticationEntryPoint
unauthorizedHandler
;
...
@@ -63,6 +63,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...
@@ -63,6 +63,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
@Override
protected
void
configure
(
HttpSecurity
httpSecurity
)
throws
Exception
{
protected
void
configure
(
HttpSecurity
httpSecurity
)
throws
Exception
{
httpSecurity
httpSecurity
// 禁用 CSRF
// 禁用 CSRF
...
...
src/main/java/me/zhengjie/
core
/rest/AuthenticationController.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/rest/AuthenticationController.java
View file @
8c4fd97e
package
me.zhengjie.
core
.rest
;
package
me.zhengjie.
modules.security
.rest
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.common.aop.log.Log
;
import
me.zhengjie.aop.log.Log
;
import
me.zhengjie.core.security.AuthenticationToken
;
import
me.zhengjie.modules.security.security.AuthenticationToken
;
import
me.zhengjie.core.security.AuthorizationUser
;
import
me.zhengjie.modules.security.security.AuthorizationUser
;
import
me.zhengjie.core.utils.JwtTokenUtil
;
import
me.zhengjie.modules.security.security.JwtUser
;
import
me.zhengjie.core.security.JwtUser
;
import
me.zhengjie.utils.EncryptUtils
;
import
me.zhengjie.core.utils.EncryptUtils
;
import
me.zhengjie.modules.security.utils.JwtTokenUtil
;
import
me.zhengjie.utils.SecurityContextHolder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.authentication.AccountExpiredException
;
import
org.springframework.security.authentication.AccountExpiredException
;
import
org.springframework.security.authentication.AuthenticationManager
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
/**
/**
* @author jie
* @author jie
...
@@ -31,9 +30,6 @@ public class AuthenticationController {
...
@@ -31,9 +30,6 @@ public class AuthenticationController {
@Value
(
"${jwt.header}"
)
@Value
(
"${jwt.header}"
)
private
String
tokenHeader
;
private
String
tokenHeader
;
@Autowired
private
AuthenticationManager
authenticationManager
;
@Autowired
@Autowired
private
JwtTokenUtil
jwtTokenUtil
;
private
JwtTokenUtil
jwtTokenUtil
;
...
@@ -46,9 +42,9 @@ public class AuthenticationController {
...
@@ -46,9 +42,9 @@ public class AuthenticationController {
* @param authorizationUser
* @param authorizationUser
* @return
* @return
*/
*/
@Log
(
description
=
"用户登录"
)
@Log
(
"用户登录"
)
@PostMapping
(
value
=
"${jwt.auth.path}"
)
@PostMapping
(
value
=
"${jwt.auth.path}"
)
public
ResponseEntity
<?>
authenticationL
ogin
(
@RequestBody
AuthorizationUser
authorizationUser
){
public
ResponseEntity
<?>
l
ogin
(
@RequestBody
AuthorizationUser
authorizationUser
){
final
UserDetails
userDetails
=
userDetailsService
.
loadUserByUsername
(
authorizationUser
.
getUsername
());
final
UserDetails
userDetails
=
userDetailsService
.
loadUserByUsername
(
authorizationUser
.
getUsername
());
...
@@ -69,12 +65,12 @@ public class AuthenticationController {
...
@@ -69,12 +65,12 @@ public class AuthenticationController {
/**
/**
* 获取用户信息
* 获取用户信息
* @param request
* @return
* @return
*/
*/
@GetMapping
(
value
=
"${jwt.auth.account}"
)
@GetMapping
(
value
=
"${jwt.auth.account}"
)
public
ResponseEntity
getUserInfo
(
HttpServletRequest
request
){
public
ResponseEntity
getUserInfo
(){
JwtUser
jwtUser
=
(
JwtUser
)
userDetailsService
.
loadUserByUsername
(
jwtTokenUtil
.
getUserName
(
request
));
UserDetails
userDetails
=
SecurityContextHolder
.
getUserDetails
();
JwtUser
jwtUser
=
(
JwtUser
)
userDetailsService
.
loadUserByUsername
(
userDetails
.
getUsername
());
return
ResponseEntity
.
ok
(
jwtUser
);
return
ResponseEntity
.
ok
(
jwtUser
);
}
}
}
}
src/main/java/me/zhengjie/
core
/security/AuthenticationToken.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/AuthenticationToken.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Getter
;
import
java.io.Serializable
;
import
java.io.Serializable
;
/**
/**
...
...
src/main/java/me/zhengjie/
core
/security/AuthorizationUser.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/AuthorizationUser.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
...
...
src/main/java/me/zhengjie/
core
/security/JwtAuthenticationEntryPoint.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/JwtAuthenticationEntryPoint.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
org.springframework.security.core.AuthenticationException
;
import
org.springframework.security.core.AuthenticationException
;
import
org.springframework.security.web.AuthenticationEntryPoint
;
import
org.springframework.security.web.AuthenticationEntryPoint
;
...
...
src/main/java/me/zhengjie/
core
/security/JwtAuthorizationTokenFilter.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/JwtAuthorizationTokenFilter.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
io.jsonwebtoken.ExpiredJwtException
;
import
io.jsonwebtoken.ExpiredJwtException
;
import
me.zhengjie.core.utils.JwtTokenUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.slf4j.Logger
;
import
me.zhengjie.modules.security.utils.JwtTokenUtil
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
...
@@ -19,11 +18,10 @@ import javax.servlet.http.HttpServletRequest;
...
@@ -19,11 +18,10 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.IOException
;
@Slf4j
@Component
@Component
public
class
JwtAuthorizationTokenFilter
extends
OncePerRequestFilter
{
public
class
JwtAuthorizationTokenFilter
extends
OncePerRequestFilter
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
private
final
UserDetailsService
userDetailsService
;
private
final
UserDetailsService
userDetailsService
;
private
final
JwtTokenUtil
jwtTokenUtil
;
private
final
JwtTokenUtil
jwtTokenUtil
;
private
final
String
tokenHeader
;
private
final
String
tokenHeader
;
...
@@ -36,7 +34,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
...
@@ -36,7 +34,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
@Override
@Override
protected
void
doFilterInternal
(
HttpServletRequest
request
,
HttpServletResponse
response
,
FilterChain
chain
)
throws
ServletException
,
IOException
{
protected
void
doFilterInternal
(
HttpServletRequest
request
,
HttpServletResponse
response
,
FilterChain
chain
)
throws
ServletException
,
IOException
{
log
ger
.
debug
(
"processing authentication for '{}'"
,
request
.
getRequestURL
());
log
.
debug
(
"processing authentication for '{}'"
,
request
.
getRequestURL
());
final
String
requestHeader
=
request
.
getHeader
(
this
.
tokenHeader
);
final
String
requestHeader
=
request
.
getHeader
(
this
.
tokenHeader
);
...
@@ -47,14 +45,14 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
...
@@ -47,14 +45,14 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
try
{
try
{
username
=
jwtTokenUtil
.
getUsernameFromToken
(
authToken
);
username
=
jwtTokenUtil
.
getUsernameFromToken
(
authToken
);
}
catch
(
ExpiredJwtException
e
)
{
}
catch
(
ExpiredJwtException
e
)
{
log
ger
.
error
(
e
.
getMessage
());
log
.
error
(
e
.
getMessage
());
}
}
}
}
log
ger
.
debug
(
"checking authentication for user '{}'"
,
username
);
log
.
debug
(
"checking authentication for user '{}'"
,
username
);
if
(
username
!=
null
&&
SecurityContextHolder
.
getContext
().
getAuthentication
()
==
null
)
{
if
(
username
!=
null
&&
SecurityContextHolder
.
getContext
().
getAuthentication
()
==
null
)
{
log
ger
.
debug
(
"security context was null, so authorizating user"
);
log
.
debug
(
"security context was null, so authorizating user"
);
// It is not compelling necessary to load the use details from the database. You could also store the information
// It is not compelling necessary to load the use details from the database. You could also store the information
// in the token and read it from it. It's up to you ;)
// in the token and read it from it. It's up to you ;)
...
@@ -65,7 +63,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
...
@@ -65,7 +63,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
if
(
jwtTokenUtil
.
validateToken
(
authToken
,
userDetails
))
{
if
(
jwtTokenUtil
.
validateToken
(
authToken
,
userDetails
))
{
UsernamePasswordAuthenticationToken
authentication
=
new
UsernamePasswordAuthenticationToken
(
userDetails
,
null
,
userDetails
.
getAuthorities
());
UsernamePasswordAuthenticationToken
authentication
=
new
UsernamePasswordAuthenticationToken
(
userDetails
,
null
,
userDetails
.
getAuthorities
());
authentication
.
setDetails
(
new
WebAuthenticationDetailsSource
().
buildDetails
(
request
));
authentication
.
setDetails
(
new
WebAuthenticationDetailsSource
().
buildDetails
(
request
));
log
ger
.
info
(
"authorizated user '{}', setting security context"
,
username
);
log
.
info
(
"authorizated user '{}', setting security context"
,
username
);
SecurityContextHolder
.
getContext
().
setAuthentication
(
authentication
);
SecurityContextHolder
.
getContext
().
setAuthentication
(
authentication
);
}
}
}
}
...
...
src/main/java/me/zhengjie/
core
/security/JwtUser.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/JwtUser.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
...
@@ -7,7 +7,10 @@ import org.springframework.security.core.GrantedAuthority;
...
@@ -7,7 +7,10 @@ import org.springframework.security.core.GrantedAuthority;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
java.sql.Timestamp
;
import
java.sql.Timestamp
;
import
java.util.*
;
import
java.util.Collection
;
import
java.util.Date
;
import
java.util.LinkedHashSet
;
import
java.util.Set
;
/**
/**
* @author jie
* @author jie
...
...
src/main/java/me/zhengjie/
core
/service/JwtUserDetailsService.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/service/JwtUserDetailsService.java
View file @
8c4fd97e
package
me.zhengjie.
core
.service
;
package
me.zhengjie.
modules.security
.service
;
import
me.zhengjie.common.exception.EntityNotFoundException
;
import
me.zhengjie.modules.system.domain.Permission
;
import
me.zhengjie.common.utils.ValidationUtil
;
import
me.zhengjie.modules.system.domain.Role
;
import
me.zhengjie.core.security.JwtUser
;
import
me.zhengjie.modules.system.domain.User
;
import
me.zhengjie.system.domain.Permission
;
import
me.zhengjie.exception.EntityNotFoundException
;
import
me.zhengjie.system.domain.Role
;
import
me.zhengjie.modules.system.repository.UserRepository
;
import
me.zhengjie.system.domain.User
;
import
me.zhengjie.modules.security.security.JwtUser
;
import
me.zhengjie.system.repository.PermissionRepository
;
import
me.zhengjie.utils.ValidationUtil
;
import
me.zhengjie.system.repository.UserRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.cache.annotation.Cacheable
;
...
@@ -18,7 +17,6 @@ import org.springframework.security.core.userdetails.UserDetailsService;
...
@@ -18,7 +17,6 @@ import org.springframework.security.core.userdetails.UserDetailsService;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Set
;
...
@@ -35,9 +33,6 @@ public class JwtUserDetailsService implements UserDetailsService {
...
@@ -35,9 +33,6 @@ public class JwtUserDetailsService implements UserDetailsService {
@Autowired
@Autowired
private
UserRepository
userRepository
;
private
UserRepository
userRepository
;
@Autowired
private
PermissionRepository
permissionRepository
;
@Override
@Override
public
UserDetails
loadUserByUsername
(
String
username
){
public
UserDetails
loadUserByUsername
(
String
username
){
...
@@ -62,20 +57,20 @@ public class JwtUserDetailsService implements UserDetailsService {
...
@@ -62,20 +57,20 @@ public class JwtUserDetailsService implements UserDetailsService {
user
.
getPassword
(),
user
.
getPassword
(),
user
.
getAvatar
(),
user
.
getAvatar
(),
user
.
getEmail
(),
user
.
getEmail
(),
mapToGrantedAuthorities
(
user
.
getRoles
()
,
permissionRepository
),
mapToGrantedAuthorities
(
user
.
getRoles
()),
user
.
getEnabled
(),
user
.
getEnabled
(),
user
.
getCreateTime
(),
user
.
getCreateTime
(),
user
.
getLastPasswordResetTime
()
user
.
getLastPasswordResetTime
()
);
);
}
}
private
static
List
<
GrantedAuthority
>
mapToGrantedAuthorities
(
Set
<
Role
>
roles
,
PermissionRepository
permissionRepository
)
{
private
static
List
<
GrantedAuthority
>
mapToGrantedAuthorities
(
Set
<
Role
>
roles
)
{
Set
<
Permission
>
permissions
=
new
HashSet
<>();
Set
<
Permission
>
permissions
=
new
HashSet
<>();
for
(
Role
role
:
roles
)
{
for
(
Role
role
:
roles
)
{
Set
<
Role
>
roleSet
=
new
HashSet
<>();
Set
<
Role
>
roleSet
=
new
HashSet
<>();
roleSet
.
add
(
role
);
roleSet
.
add
(
role
);
permissions
.
addAll
(
permissionRepository
.
findByRoles
(
roleSet
));
permissions
.
addAll
(
role
.
getPermissions
(
));
}
}
return
permissions
.
stream
()
return
permissions
.
stream
()
...
...
src/main/java/me/zhengjie/
core
/utils/JwtTokenUtil.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/utils/JwtTokenUtil.java
View file @
8c4fd97e
package
me.zhengjie.
core
.utils
;
package
me.zhengjie.
modules.security
.utils
;
import
io.jsonwebtoken.*
;
import
io.jsonwebtoken.*
;
import
io.jsonwebtoken.impl.DefaultClock
;
import
io.jsonwebtoken.impl.DefaultClock
;
import
me.zhengjie.
common.
exception.BadRequestException
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.
core
.security.JwtUser
;
import
me.zhengjie.
modules.security
.security.JwtUser
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
...
@@ -111,31 +111,14 @@ public class JwtTokenUtil implements Serializable {
...
@@ -111,31 +111,14 @@ public class JwtTokenUtil implements Serializable {
JwtUser
user
=
(
JwtUser
)
userDetails
;
JwtUser
user
=
(
JwtUser
)
userDetails
;
final
String
username
=
getUsernameFromToken
(
token
);
final
String
username
=
getUsernameFromToken
(
token
);
final
Date
created
=
getIssuedAtDateFromToken
(
token
);
final
Date
created
=
getIssuedAtDateFromToken
(
token
);
//final Date expiration = getExpirationDateFromToken(token);
// final Date expiration = getExpirationDateFromToken(token);
// 如果token存在,且token创建日期 > 最后修改密码的日期 则代表token有效
return
(
return
(
username
.
equals
(
user
.
getUsername
())
username
.
equals
(
user
.
getUsername
())
&&
!
isTokenExpired
(
token
)
&&
!
isTokenExpired
(
token
)
&&
!
isCreatedBeforeLastPasswordReset
(
created
,
user
.
getLastPasswordResetDate
())
&&
!
isCreatedBeforeLastPasswordReset
(
created
,
user
.
getLastPasswordResetDate
())
);
);
}
}
public
String
getUserName
(
HttpServletRequest
request
){
String
authToken
=
request
.
getHeader
(
tokenHeader
);
if
(
StringUtils
.
isEmpty
(
authToken
)||
authToken
.
length
()<
7
){
throw
new
BadRequestException
(
HttpStatus
.
FORBIDDEN
,
"Token令牌无效"
);
}
final
String
token
=
authToken
.
substring
(
7
);
String
username
=
null
;
try
{
username
=
getUsernameFromToken
(
token
);
}
catch
(
ExpiredJwtException
e
){
throw
new
BadRequestException
(
HttpStatus
.
UNAUTHORIZED
,
"Token令牌已过期"
);
}
return
username
;
}
private
Date
calculateExpirationDate
(
Date
createdDate
)
{
private
Date
calculateExpirationDate
(
Date
createdDate
)
{
return
new
Date
(
createdDate
.
getTime
()
+
expiration
);
return
new
Date
(
createdDate
.
getTime
()
+
expiration
);
...
...
src/main/java/me/zhengjie/system/domain/Menu.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
system/domain/Menu.java
View file @
8c4fd97e
package
me.zhengjie.system.domain
;
package
me.zhengjie.
modules.
system.domain
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
...
@@ -44,6 +44,7 @@ public class Menu {
...
@@ -44,6 +44,7 @@ public class Menu {
/**
/**
* 是否为外链 true/false
* 是否为外链 true/false
*/
*/
@Column
(
name
=
"i_frame"
)
private
Boolean
iFrame
;
private
Boolean
iFrame
;
@ManyToMany
@ManyToMany
...
@@ -51,5 +52,6 @@ public class Menu {
...
@@ -51,5 +52,6 @@ public class Menu {
private
Set
<
Role
>
roles
;
private
Set
<
Role
>
roles
;
@CreationTimestamp
@CreationTimestamp
@Column
(
name
=
"create_time"
)
private
Timestamp
createTime
;
private
Timestamp
createTime
;
}
}
src/main/java/me/zhengjie/system/domain/Permission.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
system/domain/Permission.java
View file @
8c4fd97e
package
me.zhengjie.system.domain
;
package
me.zhengjie.
modules.
system.domain
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
import
org.hibernate.annotations.CreationTimestamp
;
import
org.hibernate.annotations.CreationTimestamp
;
import
javax.persistence.*
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
...
@@ -43,6 +44,7 @@ public class Permission implements Serializable{
...
@@ -43,6 +44,7 @@ public class Permission implements Serializable{
private
Set
<
Role
>
roles
;
private
Set
<
Role
>
roles
;
@CreationTimestamp
@CreationTimestamp
@Column
(
name
=
"create_time"
)
private
Timestamp
createTime
;
private
Timestamp
createTime
;
@Override
@Override
...
...
Prev
1
2
3
4
5
6
7
8
9
10
Next
Write
Preview
Supports
Markdown
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