美文网首页
Shiro8-自定义 Realm 进行授权

Shiro8-自定义 Realm 进行授权

作者: 我相信你爱过gg | 来源:发表于2017-05-19 21:13 被阅读51次

在实际开发中我们的权限数据都是从数据库中获取的, 所以就需要我们自定一个 Realm 从数据库进行查询权限数据,将权限数据返回给 authorizer(授权器).

自定义 Realm

我们在原来的那个自定义 Realm 中修改 doGetAuthorizationInfo 方法,就可以.

具体实现

    // 用于授权
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(
            PrincipalCollection principals) {
        
        //从 principals获取主身份信息
        //将getPrimaryPrincipal方法返回值转为真实身份类型(在上边的doGetAuthenticationInfo认证通过填充到SimpleAuthenticationInfo中身份类型),
        String userCode =  (String) principals.getPrimaryPrincipal();
        
        //根据身份信息获取权限信息
        //连接数据库...
        //模拟从数据库获取到数据
        List<String> permissions = new ArrayList<String>();
        permissions.add("user:create");//用户的创建
        permissions.add("items:add");//商品添加权限
        //....
        
        //查到权限数据,返回授权信息(要包括 上边的permissions)
        SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
        //将上边查询到授权信息填充到simpleAuthorizationInfo对象中
        simpleAuthorizationInfo.addStringPermissions(permissions);

        return simpleAuthorizationInfo;
    }

授权流程

1.对 subject 进行授权, 调用方法 isPermitted("")
2.SecurityManager 执行授权, 通过 ModularRealmAuthorizer 执行授权.
3.ModularRealmAuthorizer 调用 Realm(我们自定义的)的 doGetAuthorizationInfo 方法 从数据库查询权限数据, 并返回给ModularRealmAuthorizer.
4.ModularRealmAuthorizer 调用 PermissionResolver 进行权限对比.
5.对比后,如果 isPermitted 方法中的参数在 realm 查询到的权限数据中,说明用户有权限,否则没有权限.

相关文章

  • Shiro8-自定义 Realm 进行授权

    在实际开发中我们的权限数据都是从数据库中获取的, 所以就需要我们自定一个 Realm 从数据库进行查询权限数据,将...

  • shiro--授权--javase

    //自定义realm授权,当你在自定义中的realm中有认证的时候就不需要在ini配置文件中在此配置

  • Shiro 高级

    自定义 Realm 『认证』和『授权』是 Shiro 要进行的两大操作: 认证,是判断用户的身份是否合法。类比于,...

  • 二、shiro(分布式前后端分离)自定义realm,cacheM

    1.自定义realm 自定义realm需要实现org.apache.shiro.realm.Authorizing...

  • 5.Shrio加密

    Shiro授权流程图 image.png pom文件参见JdbcRealm java代码 1.自定义Realm 2...

  • 自定义Realm

    自定义Realm主要实现 自定义Realm继承AuthorizingRealm重写doGetAuthorizati...

  • Shiro 的 Realm

    在认证、授权内部实现机制中都有提到,最终处理都将交给Realm进行处理。因为在Shiro中,最终是通过Realm来...

  • springboot整合shiro

    1. pom.xml文件引入依赖 2. 创建shiro配置类 2.1 创建自定义Realm类 实现认证和授权 3....

  • 4.Shrio自定义Realm

    自定义Realm pom.xml参见jdbcRealm java代码 1.自定义realm 2.创建测试类

  • shiro 加盐认证

    自定义Realm login.action处理

网友评论

      本文标题:Shiro8-自定义 Realm 进行授权

      本文链接:https://www.haomeiwen.com/subject/xpiyxxtx.html