前面五章基本都是给认证做铺垫的,这一章是security的另一个硬菜:授权,你在我这里注册,成为唯爱痞,我给你个令牌,你可以访问我资源,但是不能所有资源都给你,于是就有了授权,你只能访问我让你访问的资源,我不让你访问的资源,你一点都别想看。这里就出现了角色,不同的角色拥有不同的权限,可以访问不同的资源,不同的用户可以拥有多种角色,访问拥有角色可以访问的资源。
因为这里主要介绍的是security,所以角色权限这些我就简单整个Map来固定住,正常来说是需要建数据库表,访问数据库来获取,但是前面章节也有用户表,这里为了不再重复,不再创建更多的类,就简单创建下面这一个类:
- public class MockCacheUtil {
- private static MockCacheUtil mapCache;
- private final Map
- private final Map
- private MockCacheUtil() {
-
- roleItems = new ConcurrentHashMap<>();
- roleItems.put("test22", Collections.singletonList("hello1"));
-
- pattern = new ConcurrentHashMap<>();
- pattern.put("/hello",Collections.singletonList("admin"));
- pattern.put("/hello1",Arrays.asList("admin", "hello1", "hello2", "hello3"));
- pattern.put("/hello2",Arrays.asList("admin", "hello2", "hello3"));
- pattern.put("/hello3",Arrays.asList("admin", "hello3"));
- }
- public static MockCacheUtil getInstance() {
- if (mapCache == null) {
- synchronized (MockCacheUtil.class) {
- if (mapCache == null) {
- mapCache = new MockCacheUtil();
- }
- }
- }
- return mapCache;
- }
- public List
getRole(String username){ - return roleItems.get(username);
- }
- public List
- return new ArrayList<>(pattern.keySet());
- }
- public