shiro简介

简介: shiro是apache提供的强大而灵活的开源安全框架,它主要用来处理身份认证,授权,企业会话管理和加密。通俗的讲,shiro的身份认证和授权就是拦截用户未登陆或者没有相应权限的越权访问。Shiro的企业会话管理实际就是session管理,shiro的session管理可以自定义Session存储的方式,保存到内存、文件、数据库都可以,与传统tomcat等容器无关。

shiro的核心组件主要有:
Authentication(认证):用户身份识别,通常被称为用户“登录”
Authorization(授权):访问控制。比如某个用户是否具有某个操作的使用权限。
Session Management(会话管理):特定于用户的会话管理,用以代替web项目中的HttpSession对象。
PS:所以在搭建shiro环境时,配置以上3大组件是关键。
首先我们先通过一个原生的基本的java案例来了解下shiro执行过程

1.创建一个maven的java项目,引入相关的依赖

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

2.在resources中创建shiro.ini文件,该文件用来配置存储用户的账户信息、角色、权限等
#配置用户和角色信息
[users]
#格式是:用户名=密码,角色名(角色可选)
zhang=123,admin
wang=123
admin=123,normal,admin,vip
#配置角色

[roles]
#格式是:角色名=权限名1,权限名2
admin=user,menu
normal=ua
vip=delvip
vip2=delvip2

3.在测试类中编写代码测试

//1.获取安全管理器

    IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro.ini");
    SecurityManager securityManager = factory.getInstance();
    //2.需要设置安全管理器
    SecurityUtils.setSecurityManager(securityManager);
    //3.获取Subject对象,即将登陆的用户
    Subject subject = SecurityUtils.getSubject();
    Session session = subject.getSession();
    /*测试session
    session.setAttribute("name","admin");
    System.out.println(session.getAttribute("name"));*/

    //表示没有验证
    if (subject.isAuthenticated()==false){
        //通过UsernamePasswordToken来封装用户名密码,使用ini中存在的用户
        UsernamePasswordToken token = new UsernamePasswordToken("admin","123");
        token.setRememberMe(true);//是否记住
        try {
            subject.login(token);//登录
        } catch (UnknownAccountException e) {
            System.err.println("账户不存在");
        }catch (IncorrectCredentialsException e) {
            System.err.println("密码错误");
        }catch (LockedAccountException e) {
            System.err.println("账户已被锁");
        }
    }
    //是否拥有指定的角色
    if(subject.hasRole("admin")){
        System.out.println("拥有admin角色");
    }else{
        System.err.println("不是该角色");
    }
    //是否拥有制定的权限
    if (subject.isPermitted("delvip")){
        System.out.println("拥有该权限");
    }else{
        System.err.println("没有该权限");
    }
    //退出登录
    subject.logout();

ok,到此为止我们了解了一下一个简单的shiro的执行流程。

相关文章
|
4月前
|
安全 Java 数据库
Shiro概述
Shiro概述
43 0
|
缓存 算法 安全
快速学会如何使用Shiro
快速学会如何使用Shiro
121 2
|
缓存 安全 Java
【Shiro】入门概述
1.是什么 Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完 成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松 地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。
164 0
|
存储 算法 数据安全/隐私保护
【Shiro】第三章 Shiro入门(三)
【Shiro】第三章 Shiro入门(三)
79 1
|
存储 算法 程序员
【Shiro】第三章 Shiro入门(二)
【Shiro】第三章 Shiro入门(二)
81 1
|
安全 数据安全/隐私保护
【Shiro】第三章 Shiro入门(一)
【Shiro】第三章 Shiro入门
77 1
|
存储 缓存 安全
【Shiro】第二章 Shiro概述
【Shiro】第二章 Shiro概述
89 0
|
缓存 数据库 数据安全/隐私保护
【Shiro】第三章 Shiro入门(四)
【Shiro】第三章 Shiro入门(四)
82 0
|
存储 缓存 安全
Shiro 入门概述
Shiro 入门概述
|
存储 缓存 安全
Shiro学习之Shiro简介
Shiro学习之Shiro简介
106 0