Shiro权限安全框架(简单使用)

shiro:认证和授权
Apache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成:认证【登陆】、授权【权限】、加密【密码】、会话管理、与Web 集成、缓存等。

shiro流程图

在这里插入图片描述subject:理解为用户 securityManager:安全管理(核心组件) Authenticator:认证器 Authorizer:授权器 Realm:这里理解为和数据库交互的一个组件

shiro简单

1.引入相关依赖

<dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.5.3</version>
        </dependency>

2.这里 我们去创建一个ini文件 用来比拟一个数据库在这里插入图片描述

3. 测试

public class Test {

    public static void main(String[] args) {
        //得到securityManager对象  (安全管理 核心)
        DefaultSecurityManager securityManager = new DefaultSecurityManager();
        //设置securityManager管理的realm对象
        securityManager.setRealm(new IniRealm("classpath:shiro.ini"));
        //把securityManager绑定到SecurityUils
        SecurityUtils.setSecurityManager(securityManager);

        //获取subject对象
        Subject subject = SecurityUtils.getSubject();
        //封装账户和密码
        UsernamePasswordToken token = new UsernamePasswordToken("dl", "001029");
        try {
            //执行认证功能
            subject.login(token);
            //密码正确
            System.out.println("账号密码正确");
        }catch (Exception e){
            e.printStackTrace();
            //密码错误
            System.out.println("账号密码错误");
        }

        System.out.println("是否认证成功"+subject.isAuthenticated());
        System.out.println(subject.isPermitted("user:query"));  //认证成功之后 此用户是否有此权限
    }
}

正确 结果图
在这里插入图片描述密码错误的
在这里插入图片描述

shiro的执行流程图

在这里插入图片描述流程如下:
首先调用 Subject.login(token) 进行登录,其会自动委托给 Security Manager,调用之前必须通过 SecurityUtils.setSecurityManager() 设置;
SecurityManager 负责真正的身份验证逻辑;它会委托给 Authenticator 进行身份验证;
Authenticator 才是真正的身份验证者,Shiro API 中核心的身份认证入口点,此处可以自定义插入自己的实现;
Authenticator 可能会委托给相应的 AuthenticationStrategy 进行多 Realm 身份验证,默认 ModularRealmAuthenticator 会调用 AuthenticationStrategy 进行多 Realm 身份验证;
Authenticator 会把相应的 token 传入 Realm,从 Realm 获取身份验证信息,如果没有返回 / 抛出异常表示身份验证失败了。此处可以配置多个 Realm,将按照相应的顺序及策略进行访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值