全网最简单的shiro教程第五节

Shiro授权:

第一种:基于资源的授权,必须提供资源授权码才能访问相应的资源。

第二种:基于角色授权,必须获取到角色才能访问资源。

 

shiro认证与授权的关系:认证是授权的前提,通过了认证才能执行授权。

 

Java实现shiro认证流程的基本步骤:
 

授权方法:

自定义realm中的授权方法:

    /**
     *
     * 授权
     **/
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        System.out.println("授权-------------------");
        //第一种 基于资源的授权
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
        info.addStringPermission("useradd");
        // 第二种 : 基于角色的授权:
        info.addRole("vip");
        return info;
    }

Shiro授权源码解读:

第一种:基于资源:

往下点:

点:

点:

 

调用流程:
授权源码分析【subject.isPermitted】:
DelegatingSubject【isPermitted(String permission) 】
->AuthorizingRealm【isPermitted(PrincipalCollection principals, String permission)】
->AuthorizingRealm【getAuthorizationInfo(PrincipalCollection principals) 】
info = doGetAuthorizationInfo(principals);【这里调用我们自定义的Realm的doGetAuthorizationInfo方法】

第二种:基于角色:

点:

点:

点:

 

总结:

【subject.hasRole】:
DelegatingSubject【hasRole(String roleIdentifier)】
->AuthorizingRealm【hasRole(PrincipalCollection principal, String roleIdentifier) 】
->AuthorizingRealm【getAuthorizationInfo(PrincipalCollection principals)  】
info = doGetAuthorizationInfo(principals);【这里调用我们自定义的Realm的doGetAuthorizationInfo方法】

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值