自定义Realm

创建一个类继承 AuthorizingRealm,然后覆盖 doGetAuthenticationInfo 方法,在此方法当中去从数据库中获取用户信息,交给验证器去验证用户的信息是否合法,如下图所示:

/**
 * @author BNTang
 */
public class MyRealm extends AuthorizingRealm {
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        return null;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        // 获取用户名
        String username = (String) token.getPrincipal();

        // 假如以下定义的用户名和密码是从数据库中查询出来的,实际中需要注入Dao去数据库中进行查询然后进行验证查询出来的信息是否合法
        String myName = "BNTang";
        String password = "1234";

        // 如果输入的名称不和数据库查询出来的一致
        if (!myName.equals(username)) {
            return null;
        }

        // 如果等于,交给认证器去认证即可我们就无须关心了
        return new SimpleAuthenticationInfo(username, password, this.getName());
    }
}

ini 文件当中在进行配置一下,配置我们自定义的 Realm,让安全管理器使用 Realm 的时候,让他使用我们定义好的 Realm,配置完成了之后启动运行即可。测试方式同我们之前的方式一样的。

myRealm=top.it6666.realm.MyRealm
securityManager.realms=$myRealm

posted @ 2020-11-06 16:53  BNTang  阅读(112)  评论(0编辑  收藏  举报