# 认证回调
# 介绍
框架进行安全认证时,需要创建自定义的Realm
,在认证过程中回调QmSecurityRealm
中的方法进行业务拓展和基础认证。
Realm
提供了权限校验,token校验,失败回调等拓展业务接口方法,借鉴于shiro
理念,使之更加灵活。
# 回调接口
# noPassCallBack
void noPassCallBack(int type,
HttpServletRequest request,
HttpServletResponse response) throws Exception;
1
2
3
2
3
当安全检测不通过时回调该接口,回调该接口最好的处理方式是处理相关业务并推送错误信息。
该接口提供的参数为最常见的request
、response
。
值得留意的是type
参数,该参数回调的值决定回调的情况。
如下表所示:
type值 | 说明 |
---|---|
1 | 检测不到token拒绝访问 |
2 | 非法token,token提取失败 |
3 | 授权验证拦截 |
4 | 权限不足,拒绝访问 |
5 | token已经过期 |
6 | 无匹配404 |
# authorizationUserInfo
提供给调度者的检测用户是否合法的接口 当用户每次请求时进入安全监测时会调用该接口。 注意:当调度者返回null表示本次检测不通过,框架自动进行拦截,回调noPassCallBack方法type值为5。
QmUserInfo authorizationUserInfo(QmUserInfo qmUserInfo,
HttpServletRequest request,
HttpServletResponse response);
1
2
3
2
3
# authorizationMatchingURI
提供给调度者的授权URI接口,每次请求时会调用该方法进行URL授权,可相应的在该方法进行一些权限URL的封装,建议给方法内容进行一些缓存,提高访问效率。
List<String> authorizationMatchingURI(QmUserInfo qmUserInfo);
1
# 示例Demo
public class MyRealm implements QmSecurityRealm {
@Override
public List<String> authorizationMatchingURI(QmUserInfo qmUserInfo) {
List<String> list = new ArrayList<>();
list.add("/**");
return list;
}
@Override
public QmUserInfo authorizationUserInfo(QmUserInfo qmUserInfo, HttpServletRequest request, HttpServletResponse response) {
return qmUserInfo;
}
@Override
public void noPassCallBack(int type, HttpServletRequest request, HttpServletResponse response) throws Exception {
response.getWriter().print("安全检测不通过!");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
← 免验注解