Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lzh_me
Sureness
提交
8106f70f
Sureness
项目概览
lzh_me
/
Sureness
与 Fork 源项目一致
Fork自
sureness / Sureness
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Sureness
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
8106f70f
编写于
12月 15, 2020
作者:
sinat_25235033
提交者:
GitHub
12月 15, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Feature context path (#42)
* support context path setting
上级
3d3a35c2
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
73 addition
and
41 deletion
+73
-41
core/src/main/java/com/usthe/sureness/DefaultSurenessConfig.java
...c/main/java/com/usthe/sureness/DefaultSurenessConfig.java
+4
-4
core/src/main/java/com/usthe/sureness/matcher/PathTreeProvider.java
...ain/java/com/usthe/sureness/matcher/PathTreeProvider.java
+18
-0
core/src/main/java/com/usthe/sureness/mgt/SurenessSecurityManager.java
.../java/com/usthe/sureness/mgt/SurenessSecurityManager.java
+4
-4
core/src/main/java/com/usthe/sureness/provider/annotation/AnnotationLoader.java
.../usthe/sureness/provider/annotation/AnnotationLoader.java
+3
-2
core/src/main/java/com/usthe/sureness/provider/ducument/DocumentResourceDefaultProvider.java
...ss/provider/ducument/DocumentResourceDefaultProvider.java
+11
-4
core/src/main/java/com/usthe/sureness/util/SurenessCommonUtil.java
...main/java/com/usthe/sureness/util/SurenessCommonUtil.java
+30
-25
sample-tom/src/main/java/com/usthe/sureness/sample/tom/sureness/provider/ResourceProvider.java
...reness/sample/tom/sureness/provider/ResourceProvider.java
+3
-2
未找到文件。
core/src/main/java/com/usthe/sureness/DefaultSurenessConfig.java
浏览文件 @
8106f70f
...
...
@@ -79,15 +79,15 @@ public class DefaultSurenessConfig {
if
(
SUPPORT_JAX_RS
.
equals
(
supportContainer
))
{
subjectCreates
=
Arrays
.
asList
(
new
NoneSubjectJaxRsCreator
(),
new
DigestSubjectJaxRsCreator
(),
new
BasicSubjectJaxRsCreator
(),
new
JwtSubjectJaxRsCreator
(),
new
DigestSubjectJaxRsCreator
());
new
JwtSubjectJaxRsCreator
());
}
else
{
subjectCreates
=
Arrays
.
asList
(
new
NoneSubjectServletCreator
(),
new
DigestSubjectServletCreator
(),
new
BasicSubjectServletCreator
(),
new
JwtSubjectServletCreator
(),
new
DigestSubjectServletCreator
());
new
JwtSubjectServletCreator
());
}
subjectFactory
.
registerSubjectCreator
(
subjectCreates
);
if
(
logger
.
isDebugEnabled
())
{
...
...
core/src/main/java/com/usthe/sureness/matcher/PathTreeProvider.java
浏览文件 @
8106f70f
package
com.usthe.sureness.matcher
;
import
java.util.Set
;
import
java.util.concurrent.atomic.AtomicReference
;
/**
* path tree resource data provider
...
...
@@ -9,6 +10,23 @@ import java.util.Set;
*/
public
interface
PathTreeProvider
{
/**
* web server context path set, default is null
* Please sync with your server context path settings here
* eg: springboot context path is: server.servlet.context-path = v2
* tomcat context path is: <context path="v2">
*/
AtomicReference
<
String
>
contextPathRef
=
new
AtomicReference
<
String
>();
/**
* set context path
* Please sync with your server context path settings here
* @param contextPath context path
*/
default
void
setContextPath
(
String
contextPath
)
{
contextPathRef
.
set
(
contextPath
);
}
/**
* Interface for loading URL resources.
* Can load data from database, text load data, etc.
...
...
core/src/main/java/com/usthe/sureness/mgt/SurenessSecurityManager.java
浏览文件 @
8106f70f
...
...
@@ -58,14 +58,14 @@ public class SurenessSecurityManager implements SecurityManager {
}
@Override
public
SubjectSum
checkIn
(
Subject
token
)
throws
BaseSurenessException
{
public
SubjectSum
checkIn
(
Subject
subject
)
throws
BaseSurenessException
{
// Determine whether the requested resource is a filtered resource
// if yes, pass directly
if
(
pathRoleMatcher
.
isExcludedResource
(
token
))
{
if
(
pathRoleMatcher
.
isExcludedResource
(
subject
))
{
return
null
;
}
pathRoleMatcher
.
matchRole
(
token
);
return
processorManager
.
process
(
token
);
pathRoleMatcher
.
matchRole
(
subject
);
return
processorManager
.
process
(
subject
);
}
@Override
...
...
core/src/main/java/com/usthe/sureness/provider/annotation/AnnotationLoader.java
浏览文件 @
8106f70f
...
...
@@ -2,6 +2,7 @@ package com.usthe.sureness.provider.annotation;
import
com.usthe.sureness.matcher.PathTreeProvider
;
import
com.usthe.sureness.util.ClassScanner
;
import
com.usthe.sureness.util.SurenessCommonUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -76,7 +77,7 @@ public class AnnotationLoader implements PathTreeProvider {
}
}
}
return
resource
;
return
SurenessCommonUtil
.
attachContextPath
(
contextPathRef
.
get
(),
resource
)
;
}
@Override
...
...
@@ -99,7 +100,7 @@ public class AnnotationLoader implements PathTreeProvider {
}
}
}
return
resource
;
return
SurenessCommonUtil
.
attachContextPath
(
contextPathRef
.
get
(),
resource
)
;
}
public
List
<
String
>
getScanPackages
()
{
...
...
core/src/main/java/com/usthe/sureness/provider/ducument/DocumentResourceDefaultProvider.java
浏览文件 @
8106f70f
...
...
@@ -5,6 +5,7 @@ import com.usthe.sureness.matcher.SurenessLoadDataException;
import
com.usthe.sureness.provider.DefaultAccount
;
import
com.usthe.sureness.provider.SurenessAccount
;
import
com.usthe.sureness.provider.SurenessAccountProvider
;
import
com.usthe.sureness.util.SurenessCommonUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -41,10 +42,13 @@ public class DocumentResourceDefaultProvider implements PathTreeProvider, Surene
entity
=
DocumentResourceAccess
.
loadConfig
();
}
List
<
String
>
resource
=
entity
.
getResourceRole
();
Set
<
String
>
resourceSet
;
if
(
resource
!=
null
)
{
return
new
HashSet
<>(
entity
.
getResourceRole
());
resourceSet
=
new
HashSet
<>(
resource
);
}
else
{
resourceSet
=
new
HashSet
<>();
}
return
new
HashSet
<>(
);
return
SurenessCommonUtil
.
attachContextPath
(
contextPathRef
.
get
(),
resourceSet
);
}
catch
(
IOException
e
)
{
logger
.
error
(
"load config data from yaml file error: "
,
e
);
throw
new
SurenessLoadDataException
(
e
.
getMessage
());
...
...
@@ -58,14 +62,17 @@ public class DocumentResourceDefaultProvider implements PathTreeProvider, Surene
entity
=
DocumentResourceAccess
.
loadConfig
();
}
List
<
String
>
resource
=
entity
.
getExcludedResource
();
Set
<
String
>
resourceSet
;
if
(
resource
!=
null
)
{
return
new
HashSet
<>(
resource
);
resourceSet
=
new
HashSet
<>(
resource
);
}
else
{
resourceSet
=
new
HashSet
<>();
}
return
SurenessCommonUtil
.
attachContextPath
(
contextPathRef
.
get
(),
resourceSet
);
}
catch
(
IOException
e
)
{
logger
.
error
(
"load config data from yaml file error: "
,
e
);
throw
new
SurenessLoadDataException
(
e
.
getMessage
());
}
return
new
HashSet
<>();
}
@Override
...
...
core/src/main/java/com/usthe/sureness/util/SurenessCommonUtil.java
浏览文件 @
8106f70f
package
com.usthe.sureness.util
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.ws.rs.container.ContainerRequestContext
;
import
java.util.Random
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* common util
...
...
@@ -19,31 +18,10 @@ public class SurenessCommonUtil {
private
static
final
String
IPHONE
=
"iPhone"
;
private
static
final
String
WINDOWS
=
"Windows"
;
private
static
final
String
CHROME
=
"Chrome"
;
private
static
final
String
PATH_SPLIT
=
"/"
;
private
static
final
String
RANDOM_CHAR
=
"abcdefghijklmnopqrstuvwxyz0123456789"
;
/**
* Deprecated, suggest use findUserAgent(String userAgent)
* @param request HttpServletRequest
* @return userAgent
*/
@Deprecated
public
static
String
findUserAgent
(
HttpServletRequest
request
)
{
String
userAgent
=
request
.
getHeader
(
USER_AGENT
);
return
findUserAgent
(
userAgent
);
}
/**
* Deprecated, suggest use findUserAgent(String userAgent)
* @param request ContainerRequestContext
* @return userAgent
*/
@Deprecated
public
static
String
findUserAgent
(
ContainerRequestContext
request
)
{
String
userAgent
=
request
.
getHeaderString
(
USER_AGENT
);
return
findUserAgent
(
userAgent
);
}
/**
* match the userAgent
* @param userAgent string from request
...
...
@@ -88,4 +66,31 @@ public class SurenessCommonUtil {
}
return
sb
.
toString
();
}
/**
* Splice the contextPath to the head of the each uriResource
* @param contextPath context path eg: "/v2"
* @param uriResource set of uriResource eg: "/school/book===get===[role1]"
* @return set of uriResource eg: "/v2/school/book===get===[role1]"
*/
public
static
Set
<
String
>
attachContextPath
(
String
contextPath
,
Set
<
String
>
uriResource
)
{
if
(
contextPath
==
null
||
""
.
equals
(
contextPath
)
||
uriResource
==
null
||
uriResource
.
isEmpty
())
{
return
uriResource
;
}
// format context path
contextPath
=
contextPath
.
toLowerCase
().
trim
();
contextPath
=
contextPath
.
replace
(
"//"
,
"/"
);
if
(!
contextPath
.
startsWith
(
PATH_SPLIT
))
{
contextPath
=
PATH_SPLIT
.
concat
(
contextPath
);
}
if
(
contextPath
.
endsWith
(
PATH_SPLIT
))
{
contextPath
=
contextPath
.
substring
(
0
,
contextPath
.
length
()
-
1
);
}
final
String
finalContextPath
=
contextPath
;
return
uriResource
.
stream
().
map
(
resource
->
resource
.
startsWith
(
PATH_SPLIT
)
?
finalContextPath
.
concat
(
resource
)
:
finalContextPath
.
concat
(
PATH_SPLIT
).
concat
(
resource
)
).
collect
(
Collectors
.
toSet
());
}
}
sample-tom/src/main/java/com/usthe/sureness/sample/tom/sureness/provider/ResourceProvider.java
浏览文件 @
8106f70f
...
...
@@ -2,6 +2,7 @@ package com.usthe.sureness.sample.tom.sureness.provider;
import
com.usthe.sureness.matcher.PathTreeProvider
;
import
com.usthe.sureness.sample.tom.service.ResourceService
;
import
com.usthe.sureness.util.SurenessCommonUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
...
...
@@ -21,13 +22,13 @@ public class ResourceProvider implements PathTreeProvider {
@Override
public
Set
<
String
>
providePathData
()
{
return
resourceService
.
getAllEnableResourcePath
(
);
return
SurenessCommonUtil
.
attachContextPath
(
contextPathRef
.
get
(),
resourceService
.
getAllEnableResourcePath
()
);
}
@Override
public
Set
<
String
>
provideExcludedResource
()
{
return
resourceService
.
getAllDisableResourcePath
(
);
return
SurenessCommonUtil
.
attachContextPath
(
contextPathRef
.
get
(),
resourceService
.
getAllDisableResourcePath
()
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录