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