一、Permission字符串
1、格式
资源:权限:操作
(常用格式是:)
- 资源 :指系统中需要被保护的对象、数据或服务等。资源可以是一个统称,也可以是具体的对象。
- 权限 :指对资源所具备的操作或功能,用于限制对资源的访问和使用。权限可以是一个动词或描述性词语。需要准确表示权限的作用或功能。
- 操作:指执行某个权限对应的具体行为,如CRUD。
通配符(*
)表示一个或多个。
2、具体示例
3、其他分隔符
-
使用"/"作为分隔符
一种层次结构路径,显示权限是如何在资源之间划分的。
例如,posts/view/read
-
使用"."作为分隔符
通常适用于具有明确定义的对象或资源层次结构的系统,使权限更像分层组件或命名空间。
例如,posts.view.read
疑惑:上面3种形式(:
,/
,.
),在实际开发中应该用那种分隔符?
回答:个人理解,用那种都行,主要根据系统最开始时怎么定义,想用那种都行。
二、认证授权的相关内容
1、权限与URI,以及URL的区别
- 权限(permission):在 其他分隔符 中,有用"/"作为分割符,与URL和URI的样式很相似,但它主要还是作为权限的字符串。
- URI:唯一标识一个资源。。
注意:
在实际开发中,权限(permission)和URI是结合使用的。
@Bean
public FilterChainDefinitionMap createFilterChainDefinitionMap() {
Map<String, String> filterChainMap = new LinkedHashMap<>();
filterChainMap.put("/public/**", "anon");
filterChainMap.put("/admin/**", "authc,roles[admin]");
filterChainMap.put("/**", "authc");
return new DefaultFilterChainDefinitionMap(filterChainMap);
}
在上面的例子中,我们将 /public/**
路径下的 URI 设置为不需要认证即可访问(anon
),
将 /admin/**
路径下的 URI 设置为 需要认证 和拥有 admin
权限才能访问(authc,roles[admin]
),
将其他所有路径下的 URI 设置为需要认证才能访问(authc
)。
2、认证和授权过滤器名称
3、授权方式
主要有4种:
下面主要介绍注解式和基于URI拦截。