Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lzh_me
Sureness
提交
fe135e51
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,发现更多精彩内容 >>
提交
fe135e51
编写于
8月 23, 2020
作者:
sinat_25235033
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update doc--add default-auth and modify other docs, markdown support mermaid
上级
dfa80441
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
106 addition
and
19 deletion
+106
-19
docs/_images/basicAuthPostmanUse.png
docs/_images/basicAuthPostmanUse.png
+0
-0
docs/_images/jwtPostmanUse.png
docs/_images/jwtPostmanUse.png
+0
-0
docs/_sidebar.md
docs/_sidebar.md
+5
-4
docs/custom-datasource.md
docs/custom-datasource.md
+3
-1
docs/custom-processor.md
docs/custom-processor.md
+3
-1
docs/custom-subject.md
docs/custom-subject.md
+3
-1
docs/default-auth.md
docs/default-auth.md
+38
-0
docs/default-datasource.md
docs/default-datasource.md
+3
-2
docs/default-exception.md
docs/default-exception.md
+22
-1
docs/extend-point.md
docs/extend-point.md
+1
-2
docs/index.html
docs/index.html
+19
-0
docs/path-match.md
docs/path-match.md
+4
-2
docs/quickstart.md
docs/quickstart.md
+3
-3
docs/sample-bootstrap.md
docs/sample-bootstrap.md
+1
-1
docs/sample-tom.md
docs/sample-tom.md
+1
-1
未找到文件。
docs/_images/basicAuthPostmanUse.png
0 → 100644
浏览文件 @
fe135e51
83.7 KB
docs/_images/jwtPostmanUse.png
0 → 100644
浏览文件 @
fe135e51
86.1 KB
docs/_sidebar.md
浏览文件 @
fe135e51
-
入门
-
[
介绍
](
README.md
"introduce"
)
-
[
快速开始
](
quickstart.md
"quick start greatest"
)
-
进阶扩展
-
[
URI路径匹配
](
path-match.md
)
-
[
默认数据源
](
default-datasource.md
)
-
[
默认认证方式
](
default-auth.md
)
-
[
默认异常
](
default-exception.md
)
-
进阶扩展
-
[
扩展点
](
extend-point.md
)
-
[
自定义数据源
](
custom-datasource.md
)
-
[
自定义Subject
](
custom-subject.md
)
...
...
@@ -14,8 +17,6 @@
-
[
30分钟项目集成
](
sample-tom.md
)
-
其它
-
[
url路径匹配
](
path-match.md
)
-
[
sureness异常
](
exception.md
)
-
[
设计文档
](
design.md
)
-
[
参与贡献
](
contributing.md
)
-
[
Changelog
](
https://github.com/tomsun28/sureness/releases
':ignore'
)
docs/custom-datasource.md
浏览文件 @
fe135e51
## 自定义数据源
自定义前需要了解sureness提供的扩展接口,详见
[
进阶扩展
](
extend-point.md
)
实现
`PathTreeProvider`
的接口, 加载到
`DefaultPathRoleMatcher`
中.
实现
`SurenessAccountProvider`
的接口,加载到需要的
`processor`
中.
具体扩展实践请参考
[
使用sureness30分钟
搭建权限项目--sample-tom
](
https://github.com/tomsun28/sureness
)
具体扩展实践请参考
[
使用sureness30分钟
项目集成案例
](
sample-tom.md
)
docs/custom-processor.md
浏览文件 @
fe135e51
## 自定义processor
自定义前需要了解sureness提供的扩展接口,详见
[
进阶扩展
](
extend-point.md
)
一个
`subject`
当然也可以被不同的
`processor`
处理,所以可以单独自定义
`processor`
实现
`Processor`
接口,设置支持的
`subject`
,实现处理该
`subject`
的逻辑
具体扩展实践请参考
[
使用sureness30分钟
搭建权限项目--sample-tom
](
https://github.com/tomsun28/sureness
)
具体扩展实践请参考
[
使用sureness30分钟
项目集成案例
](
sample-tom.md
)
\ No newline at end of file
docs/custom-subject.md
浏览文件 @
fe135e51
## 自定义subject
自定义前需要了解sureness提供的扩展接口,详见
[
进阶扩展
](
extend-point.md
)
实现
`Subject`
接口,添加自定义的
`subject`
内容
实现
`SubjectCreate`
接口方法,创建出自定义的
`subject`
实现
`Processor`
接口,支持处理自定义的
`subject`
具体扩展实践请参考
[
使用sureness30分钟
搭建权限项目--sample-tom
](
https://github.com/tomsun28/sureness
)
具体扩展实践请参考
[
使用sureness30分钟
项目集成案例
](
sample-tom.md
)
\ No newline at end of file
docs/default-auth.md
0 → 100644
浏览文件 @
fe135e51
## 默认支持的认证方式
`sureness`
目前默认支持的认证方式有
`bearer jwt`
,
`basic auth`
, 当然用户可以通过扩展
`Processor`
,
`Subject`
和
`SubjectCreate`
接口实现自定义的认证方式
#### `bearer jwt`
`jwt`
即
`json web token`
,是目前很流行的跨域,无状态,安全认证解决方案,介绍详见
[
网络
](
http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html
)
我们这里为啥叫
`bearer jwt`
是因为
`jwt`
是放入到http请求头的
`bearer token`
里面,即:
`Authorization: Bearer jsonWebTokenValue`
eg:
```
GET /api/v1/source1 HTTP/1.1
Host: localhost:8088
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzUxMiIsInppcCI6IkRFRiJ9.eNocjEEOwiAQRe8y65IwCBQ4hlvjotAhVqs1DBoT492l7F5e_vtfuNYFAliUPs3aCrIuCW1nFDHlUaBVqJOLJpkIA_ArtnHd7o0X5s43egim8qayy6lCQOOUd15JHIA-zy4OUo5dlG2lFp46KDjvR0fKhfgCIU8r0-8PAAD__w.f-3klWWDpEO3uDLlx2S53DV2cYernwVEDwcC6z1JexocbZoxRKmASTOuky1qMCxy_hV8-RbuMjDmI3ASa_FQOw
```
我们可以在
`postman`
如下使用它: 将
`jwt`
值塞入
`Bearer Token`
里.
![
jwtPostmanUse
](
_images/jwtPostmanUse.png
)
#### `basic auth`
`basic auth`
即
`Basic access authentication`
,经典的
`http`
基本认证方式,介绍详见
[
网络
](
https://www.jianshu.com/p/4cd42f7359f4
)
这种认证方式是将账户密码组成的字符串
`base64`
加密,放入到请求头的
`Authorization`
中, 即:
`Authorization: Basic base64encode(username+":"+password)`
eg:
```
GET /api/v1/source1 HTTP/1.1
Host: localhost:8088
Content-Type: application/json
Authorization: Basic dG9tOjMyMTEz
```
我们可以在
`postman`
如下使用它: 在
`Basic Auth`
类型的
`Authorization`
中输入账户密码即可,
`postman`
会自动对其
`base64`
加密.
![
basicAuthPostmanUse
](
_images/basicAuthPostmanUse.png
)
#### 其他认证方式
目前sureness暂支持这两种,之后会陆续扩展其他基本认证方式,当然你也可以很轻松的自定义认证方式,详见
[
自定义Subject
](
custom-subject.md
)
我们提供了默认认证方式的使用
`DEMO`
,请参考
[
使用sureness10分钟项目集成案例
](
sample-bootstrap.md
)
当然我们也提供了自定义认证方式的扩展
`DEMO`
,请参考
[
使用sureness30分钟项目集成案例
](
sample-tom.md
)
docs/default-datasource.md
浏览文件 @
fe135e51
# 默认数据源
#
#
默认数据源
`sureness`
认证鉴权当然也需要我们自己的配置数据:账户数据,角色权限数据等
这些配置数据可能来自文本,关系数据库,非关系数据库
...
...
@@ -54,4 +54,5 @@ account:
```
我们提供了默认文本数据源使用
`DEMO`
,默认文本数据源具体实现,请参考
[
使用sureness10分钟搭建权限项目--sample-bootstrap
](
https://github.com/tomsun28/sureness/tree/master/sample-bootstrap
)
我们提供了默认文本数据源使用
`DEMO`
,默认文本数据源具体实现,请参考
[
使用sureness10分钟项目集成案例
](
sample-bootstrap.md
)
当然数据源也可以来自数据库等存储,我们提供了接口让用户轻松的自定义数据源,详见
[
自定义数据源
](
custom-datasource.md
)
\ No newline at end of file
docs/exception.md
→
docs/
default-
exception.md
浏览文件 @
fe135e51
## sureness 异常
## sureness 默认异常
`sureness`
使用异常处理流程,我们需要对
`checkIn`
的认证鉴权流程中发生的认证失败或无权限访问等抛出的相应异常做自定义处理,
若认证鉴权成功,则直接通过,失败抛出特定异常,捕获异常,流程如下:
```
try {
SubjectSum subject = SurenessSecurityManager.getInstance().checkIn(servletRequest);
} catch (ProcessorNotFoundException | UnknownAccountException | UnsupportedSubjectException e4) {
// 账户创建相关异常
} catch (DisabledAccountException | ExcessiveAttemptsException e2 ) {
// 账户禁用相关异常
} catch (IncorrectCredentialsException | ExpiredCredentialsException e3) {
// 认证失败相关异常
} catch (UnauthorizedException e5) {
// 鉴权失败相关异常
} catch (RuntimeException e) {
// 其他自定义异常
}
```
sureness 默认支持的异常处理流程中的异常如下:
`sureness`
异常 | 异常描述
--- | ---
...
...
docs/extend-point.md
浏览文件 @
fe135e51
...
...
@@ -19,5 +19,4 @@ A(用户请求体进来) --> B(s)
B(subjectCreate根据请求头内容创建不同的钥匙subject,每把钥匙都可以尝试) --> C(s)
C(不同的钥匙认证方式即不同的锁processor来处理进来的钥匙subject) --> D(s)
D(以上一次成功即成功并结束,失败即下一个钥匙锁尝试直到所有尝试结束)
```
```
\ No newline at end of file
docs/index.html
浏览文件 @
fe135e51
...
...
@@ -10,10 +10,16 @@
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0, minimum-scale=1.0"
>
<!-- 样式主题vue网站样式-->
<link
rel=
"stylesheet"
href=
"//cdn.jsdelivr.net/npm/docsify/lib/themes/vue.css"
>
<link
rel=
"stylesheet"
href=
"//cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.css"
>
<!--support mermaid 图表-->
<script
src=
"//cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"
></script>
</head>
<body>
<div
id=
"app"
>
冲鸭!...
</div>
<script>
var
num
=
0
;
mermaid
.
initialize
({
startOnLoad
:
false
});
window
.
$docsify
=
{
auto2top
:
true
,
coverpage
:
[
'
/
'
,
'
/en/
'
],
...
...
@@ -40,6 +46,19 @@
fontsize
:
'
0.9em
'
,
color
:
'
rgba(240,240,240,0.06)
'
,
language
:
'
chinese
'
},
<!--
support
mermaid
图表
-->
markdown
:
{
renderer
:
{
code
:
function
(
code
,
lang
)
{
if
(
lang
===
"
mermaid
"
)
{
return
(
'
<div class="mermaid">
'
+
mermaid
.
render
(
'
mermaid-svg-
'
+
num
++
,
code
)
+
"
</div>
"
);
}
return
this
.
origin
.
code
.
apply
(
this
,
arguments
);
}
}
}
}
</script>
...
...
docs/path-match.md
浏览文件 @
fe135e51
##
url
路径匹配
##
URI
路径匹配
我们配置的资源格式为:
`requestUri===httpMethod`
, 即请求的路径加上其请求方式(
`post,get,put,delete...`
)作为一个整体被视作一个资源
`eg: /api/v2/book===get`
`get`
方式请求
`/api/v2/book`
接口数据
这里的
`requestUri`
支持url路径匹配:
`*`
,
`**`
这里的
`requestUri`
支持url路径匹配
符匹配
:
`*`
,
`**`
通配符 | 描述
--- | ---
...
...
@@ -17,3 +17,5 @@
`/**/foo`
| 可以匹配
`/api/user/book/foo`
等
匹配优先级: 原始字符串 >
`*`
>
`**`
最长路径匹配原则:
eg:
`requestUri`
为
`/app/book/foo`
,若存在两个路径匹配模式
`/app/**`
和
`/app/book/*`
,则会匹配到
`/app/book/*`
\ No newline at end of file
docs/quickstart.md
浏览文件 @
fe135e51
...
...
@@ -63,7 +63,7 @@ SurenessSecurityManager.getInstance().checkIn(servletRequest)
// 其他自定义异常
}
```
异常详见
[
sureness 异常
](
exception.md
)
异常详见
[
sureness 异常
](
default-
exception.md
)
### 加载配置数据
...
...
@@ -74,7 +74,7 @@ SurenessSecurityManager.getInstance().checkIn(servletRequest)
默认文本数据源配置详见
[
默认数据源
](
default-datasource.md
)
我们提供了默认文本数据源使用
`DEMO`
,默认文本数据源具体实现,请参考
[
使用sureness10分钟搭建权限项目--sample-bootstrap
](
https://github.com/tomsun28/sureness/tree/master/sample-bootstrap
)
若权限配置数据来自数据库,请参考
[
使用sureness30分钟搭建权限项目--sample-tom
](
https://github.com/tomsun28/sureness/tree/master/sample-tom
)
我们提供了默认文本数据源使用
`DEMO`
,默认文本数据源具体实现,请参考
[
使用sureness10分钟项目集成案例
](
sample-bootstrap.md
)
若权限配置数据来自数据库,请参考
[
使用sureness30分钟项目集成案例
](
sample-tom.md
)
**HAVE FUN**
\ No newline at end of file
docs/sample-bootstrap.md
浏览文件 @
fe135e51
## Sample-bootstrap
[
sureness 10分钟例子项目
](
https://github.com/tomsun28/sureness/tree/master/sample-bootstrap
)
[
sureness 10分钟例子项目
仓库地址
](
https://github.com/tomsun28/sureness/tree/master/sample-bootstrap
)
-
基于
`springboot`
-
从默认的配置文件
`sureness.yml`
加载账户信息,资源角色,过滤资源等信息
...
...
docs/sample-tom.md
浏览文件 @
fe135e51
## Sample-tom
[
sureness 30分钟例子项目
](
https://github.com/tomsun28/sureness/tree/master/sample-tom
)
[
sureness 30分钟例子项目
仓库地址
](
https://github.com/tomsun28/sureness/tree/master/sample-tom
)
-
基于
`springboot,jpa...`
-
自定义数据源,使用从数据库加载账户信息,资源角色,过滤资源等信息,这样便于动态调整
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录