Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
elearn
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
hqzhdj
elearn
Commits
4892d01e
Commit
4892d01e
authored
Jan 02, 2025
by
阳浪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
查看我的投稿接口
parent
6da4438a
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
5 additions
and
170 deletions
+5
-170
cloud-core/pom.xml
+0
-9
cloud-core/src/main/java/com/yizhi/core/application/security/config/JwtAuthenticationEntryPoint.java
+0
-102
cloud-core/src/main/java/com/yizhi/core/application/security/config/SpringSecurityConfig.java
+0
-49
cloud-gateWay/src/main/java/com/yizhi/application/GatewayApplication.java
+3
-2
cloud-log/src/main/java/com/yizhi/application/LogApplication.java
+0
-6
cloud-system/src/main/java/com/yizhi/system/application/SystemApplication.java
+2
-2
No files found.
cloud-core/pom.xml
View file @
4892d01e
...
...
@@ -63,20 +63,11 @@
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
</dependency>
<dependency>
<groupId>
redis.clients
</groupId>
<artifactId>
jedis
</artifactId>
<version>
3.3.0
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-security
</artifactId>
</dependency>
<dependency>
<groupId>
org.hibernate.validator
</groupId>
<artifactId>
hibernate-validator
</artifactId>
<version>
6.1.5.Final
</version>
...
...
cloud-core/src/main/java/com/yizhi/core/application/security/config/JwtAuthenticationEntryPoint.java
deleted
100644 → 0
View file @
6da4438a
package
com
.
yizhi
.
core
.
application
.
security
.
config
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.google.common.collect.Lists
;
import
com.yizhi.core.application.cache.RedisCache
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.core.AuthenticationException
;
import
org.springframework.security.web.AuthenticationEntryPoint
;
import
org.springframework.stereotype.Component
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.Serializable
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Optional
;
/**
* 未认证用户访问须授权资源端点
*
* @author xuyuxiang
* @date 2020/3/18 11:52
*/
@Component
@Slf4j
public
class
JwtAuthenticationEntryPoint
implements
AuthenticationEntryPoint
,
Serializable
{
@Autowired
private
RedisCache
redisCache
;
private
String
WHITE_KEY
=
"system:url:whitelist"
;
/**
* 访问未经授权的接口时执行此方法,未经授权的接口包含系统中存在和不存在的接口,分别处理
*
* @author xuyuxiang
* @date 2020/3/18 19:15
*/
@Override
public
void
commence
(
HttpServletRequest
request
,
HttpServletResponse
response
,
AuthenticationException
e
)
throws
IOException
{
String
requestUri
=
request
.
getRequestURI
();
RequestContext
context
=
ContextHolder
.
get
();
List
<
String
>
uriList
=
Lists
.
newArrayList
();
Object
whiteObject
=
redisCache
.
get
(
WHITE_KEY
);
if
(
whiteObject
!=
null
){
uriList
=
JSONArray
.
parseArray
(
whiteObject
.
toString
(),
String
.
class
);
}
else
{
uriList
.
add
(
"/web-manage/*"
);
uriList
.
add
(
"/web-student/*"
);
uriList
.
add
(
"/system/*"
);
uriList
.
add
(
"/training/*"
);
uriList
.
add
(
"/exam/*"
);
uriList
.
add
(
"/sign/*"
);
uriList
.
add
(
"/site/*"
);
uriList
.
add
(
"/research/*"
);
uriList
.
add
(
"/newMessage/*"
);
uriList
.
add
(
"/job/*"
);
uriList
.
add
(
"/enroll/*"
);
uriList
.
add
(
"/drools/*"
);
uriList
.
add
(
"/log/*"
);
uriList
.
add
(
"/assignment/*"
);
uriList
.
add
(
"/album/*"
);
uriList
.
add
(
"/aliyun/*"
);
uriList
.
add
(
"/caselibrary/*"
);
uriList
.
add
(
"/forum/*"
);
uriList
.
add
(
"/cloud-xxl-job-executor/*"
);
uriList
.
add
(
"/cloud-xxl-job-admin/*"
);
uriList
.
add
(
"/comment/*"
);
uriList
.
add
(
"/course/*"
);
uriList
.
add
(
"/point/*"
);
redisCache
.
set
(
WHITE_KEY
,
JSONArray
.
toJSONString
(
uriList
));
}
if
(
CollectionUtil
.
isNotEmpty
(
uriList
))
{
Optional
<
String
>
optional
=
uriList
.
stream
().
filter
(
u
->
isMatch
(
u
,
requestUri
)).
findFirst
();
if
(
optional
!=
null
&&
optional
.
isPresent
()){
return
;
}
}
//校验用户登录
if
(
ObjectUtil
.
isEmpty
(
context
)||
ObjectUtil
.
isEmpty
(
context
.
getAccountId
()))
{
log
.
error
(
">>> 用户未登录或登录已过期,requestUri={}"
,
requestUri
);
throw
new
RuntimeException
(
"用户未登录或登录已过期"
);
}
}
public
boolean
isMatch
(
String
pattern
,
String
text
)
{
String
regexPattern
=
pattern
.
replace
(
"."
,
"\\."
).
replace
(
"*"
,
".*"
);
return
java
.
util
.
regex
.
Pattern
.
matches
(
regexPattern
,
text
);
}
}
cloud-core/src/main/java/com/yizhi/core/application/security/config/SpringSecurityConfig.java
deleted
100644 → 0
View file @
6da4438a
package
com
.
yizhi
.
core
.
application
.
security
.
config
;
import
org.springframework.security.config.annotation.web.builders.HttpSecurity
;
import
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
;
import
javax.annotation.Resource
;
/**
* SpringSecurity配置
* @author xuyuxiang
* @date 2020/3/18 10:54
*/
public
class
SpringSecurityConfig
extends
WebSecurityConfigurerAdapter
{
@Resource
private
JwtAuthenticationEntryPoint
jwtAuthenticationEntryPoint
;
@Override
protected
void
configure
(
HttpSecurity
httpSecurity
)
throws
Exception
{
//开启模拟请求,比如API POST测试工具的测试,不开启时,API POST为报403错误
httpSecurity
.
csrf
().
disable
();
//开启跨域访问
// httpSecurity.cors();
//不使用默认退出,自定义退出
httpSecurity
.
logout
().
disable
();
//未授权时访问须授权的资源端点
httpSecurity
.
exceptionHandling
().
authenticationEntryPoint
(
jwtAuthenticationEntryPoint
);
//其余的都需授权访问
httpSecurity
.
authorizeRequests
().
anyRequest
().
authenticated
();
//全局不创建session
// httpSecurity.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
//禁用页面缓存,返回的都是json
httpSecurity
.
headers
()
.
frameOptions
().
disable
()
.
cacheControl
();
}
}
cloud-gateWay/src/main/java/com/yizhi/application/GatewayApplication.java
View file @
4892d01e
...
...
@@ -4,7 +4,8 @@ import com.yizhi.util.application.constant.GlobalConstant;
import
feign.*
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.cloud.client.SpringCloudApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
;
import
org.springframework.cloud.netflix.zuul.EnableZuulProxy
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.Bean
;
...
...
@@ -21,8 +22,8 @@ import java.util.List;
//import org.springframework.cloud.netflix.feign.EnableFeignClients;
@SpringCloudApplication
@EnableZuulProxy
@SpringBootApplication
(
exclude
=
{
RabbitAutoConfiguration
.
class
})
@ComponentScan
(
basePackages
=
{
"com.yizhi"
})
@EnableFeignClients
(
basePackages
=
"com.yizhi.system.application.system.remote"
)
public
class
GatewayApplication
{
...
...
cloud-log/src/main/java/com/yizhi/application/LogApplication.java
View file @
4892d01e
package
com
.
yizhi
.
application
;
import
com.yizhi.core.application.log.LogQueue
;
import
com.yizhi.core.application.security.config.SpringSecurityConfig
;
import
org.springframework.amqp.core.Queue
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
...
...
@@ -9,7 +8,6 @@ import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.DependsOn
;
@SpringBootApplication
(
exclude
=
{
RabbitAutoConfiguration
.
class
})
...
...
@@ -40,10 +38,6 @@ public class LogApplication {
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
LogApplication
.
class
,
args
);
}
@Bean
public
SpringSecurityConfig
springSecurityConfig
(){
return
new
SpringSecurityConfig
();
}
}
cloud-system/src/main/java/com/yizhi/system/application/SystemApplication.java
View file @
4892d01e
package
com
.
yizhi
.
system
.
application
;
import
com.yizhi.core.application.security.config.SpringSecurityConfig
;
import
feign.RequestInterceptor
;
import
feign.RequestTemplate
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.netflix.hystrix.EnableHystrix
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.DependsOn
;
import
org.springframework.core.env.Environment
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.util.Enumeration
;
@EnableHystrix
@SpringBootApplication
(
exclude
=
{
RabbitAutoConfiguration
.
class
})
@EnableDiscoveryClient
@EnableFeignClients
(
basePackages
=
"com.yizhi"
)
@EnableAsync
@ComponentScan
(
basePackages
=
{
"com.yizhi"
})
public
class
SystemApplication
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SystemApplication
.
class
);
public
static
void
main
(
String
[]
args
)
throws
UnknownHostException
{
Environment
env
=
SpringApplication
.
run
(
SystemApplication
.
class
,
args
).
getEnvironment
();
String
port
=
env
.
getProperty
(
"server.port"
,
"8080"
);
logger
.
info
(
"Access URLs:\n----------------------------------------------------------\n\t"
+
"Local: \t\thttp://10.23.1.183:{}\n\t"
+
"External: \thttp://{}:{}\n----------------------------------------------------------"
,
port
,
InetAddress
.
getLocalHost
().
getHostAddress
(),
port
);
}
@Bean
public
SpringSecurityConfig
springSecurityConfig
(){
return
new
SpringSecurityConfig
();
}
@Bean
//帮助调其他服务时,能取到上下文里面的信息 public RequestInterceptor headerInterceptor() { return new RequestInterceptor() { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); if (attributes != null) { HttpServletRequest request = attributes.getRequest(); Enumeration<String> headerNames = request.getHeaderNames(); if (headerNames != null) { while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); String values = request.getHeader(name); requestTemplate.header(name, values); } } } } }; } }
\ No newline at end of file
package
com
.
yizhi
.
system
.
application
;
import
feign.RequestInterceptor
;
import
feign.RequestTemplate
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.netflix.hystrix.EnableHystrix
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.core.env.Environment
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.util.Enumeration
;
@EnableHystrix
@SpringBootApplication
(
exclude
=
{
RabbitAutoConfiguration
.
class
})
@EnableDiscoveryClient
@EnableFeignClients
(
basePackages
=
"com.yizhi"
)
@EnableAsync
@ComponentScan
(
basePackages
=
{
"com.yizhi"
})
public
class
SystemApplication
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SystemApplication
.
class
);
public
static
void
main
(
String
[]
args
)
throws
UnknownHostException
{
Environment
env
=
SpringApplication
.
run
(
SystemApplication
.
class
,
args
).
getEnvironment
();
String
port
=
env
.
getProperty
(
"server.port"
,
"8080"
);
logger
.
info
(
"Access URLs:\n----------------------------------------------------------\n\t"
+
"Local: \t\thttp://10.23.1.183:{}\n\t"
+
"External: \thttp://{}:{}\n----------------------------------------------------------"
,
port
,
InetAddress
.
getLocalHost
().
getHostAddress
(),
port
);
}
@Bean
//帮助调其他服务时,能取到上下文里面的信息 public RequestInterceptor headerInterceptor() { return new RequestInterceptor() { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); if (attributes != null) { HttpServletRequest request = attributes.getRequest(); Enumeration<String> headerNames = request.getHeaderNames(); if (headerNames != null) { while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); String values = request.getHeader(name); requestTemplate.header(name, values); } } } } }; } }
\ 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