簡單快速的在項目中進行權限驗證
一、導入依賴
<dependency>
<groupId>cn.gjing</groupId>
<artifactId>tools-auth</artifactId>
<version>1.0.0</version>
</dependency>
二、權限註解
該註解使用在API上,用於對用戶請求方法時進行身份認證
1、@RequiredPermissions
權限認證,請求的用戶需要存在該註解中設置的權限,否則拋出PermissionAuthorizationException
參數 | 描述 |
---|---|
value | 需要的權限 |
2、@RequiredRoles
角色認證,請求的用戶需要存在該註解中設置的角色,否則拋出RoleAuthorizationException
參數 | 描述 |
---|---|
value | 需要的角色 |
三、token生成器
主要用來生成Token和解析Token,使用時可以通過@Resource
註解進行依賴注入
public class TestController {
@Resource
private TokenAssistant tokenAssistant;
@GetMapping("/token")
public void getToken() {
Map<String, Object> map = new HashMap<>(16);
map.put("user", "張三");
String token = this.tokenAssistant.createToken(map);
System.out.println("生成的token:" + map);
System.out.println("解析token:" + this.tokenAssistant.parseToken(token));
}
}
四、啓動類增加註解
在項目啓動類增加@EnableAuthorization
註解用於開啓項目權限校驗
五、設置權限認證監聽器
通過監聽器可以對用戶擁有的權限進行提供以及進行自己的認證校驗
/**
* @author Gjing
**/
@Component
public class MyListener implements AuthorizationListener {
/**
* 增加用戶的訪問權限用於對增加了權限註解的方法進行身份認證,如果返回null會拋出NoAccountException
* 這裏模擬權限數據,給當前請求的用戶增加admin角色和add權限。實際使用時
* 用戶權限你可以保存在任何地方
*
* @param token 用戶Token
* @return AuthorizationMetaData
*/
@Override
public AuthorizationMetaData supplyAccess(String token) {
SimpleAuthorizationMetaData metaData = new SimpleAuthorizationMetaData();
metaData.addRole("admin");
metaData.addPermission("add");
return metaData;
}
/**
* 權限註解驗證通過後會觸發該方法,你可以在這裏做一些項目中自己的權限認證邏輯
*
* @param token 用戶Token
*/
@Override
public void authentication(String token) {
}
/**
* 驗證全部通過後且方法執行完畢
*
* @param request HttpServletRequest
* @param method 請求的方法
*/
@Override
public void authenticationSuccess(HttpServletRequest request, Method method) {
System.out.println();
}
}
六、額外配置
可以通過這些配置控制攔截路徑和過濾路徑,以及token存在的請求頭名稱等等...全部配置如下:
snow:
auth:
# 攔截的路徑
path: /**
# 排除的路徑
filter:
# 生成token的加密方式
type: hs256
# token存放的請求頭名稱
header: Authorization
# 加密的鹽
salt: