# 认证回调

# 介绍

框架进行安全认证时,需要创建自定义的Realm,在认证过程中回调QmSecurityRealm中的方法进行业务拓展和基础认证。

# 回调接口

# noPassCallBack

void noPassCallBack(int type, 
                    HttpServletRequest request, 
                    HttpServletResponse response) throws Exception;
1
2
3

当安全检测不通过时回调该接口,回调该接口最好的处理方式是处理相关业务并推送错误信息。

该接口提供的参数为最常见的requestresponse

值得留意的是type参数,该参数回调的值决定回调的情况。

如下表所示:

type值 说明
1 检测不到token拒绝访问
2 非法token,token提取失败
3 授权验证拦截
4 权限不足,拒绝访问
5 token已经过期

# authorizationUserInfo

提供给调度者的检测用户是否合法的接口 当用户每次请求时进入安全监测时会调用该接口。 注意:返回null表示本次检测不通过,框架自动进行拦截,回调noPassCallBack方法type值为5。

QmUserInfo authorizationUserInfo(QmUserInfo qmUserInfo, 
                                 HttpServletRequest request, 
                                 HttpServletResponse response);
1
2
3

# authorizationMatchingURI

提供给调度者的授权URI接口。

List<String> authorizationMatchingURI(QmUserInfo qmUserInfo);
1

# 示例

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
最近更新: 2019/10/17 上午4:20:42