Shiro安全框架(一)——入门Demo

Shiro安全框架

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。
一:入门案例
1.使用Idea创建一个Web项目
2.在pom.xml文件中引入依赖坐标

       <dependency>
          <groupId>org.apache.shiro</groupId>
          <artifactId>shiro-core</artifactId>
          <version>1.2.2</version>
        </dependency>
        <dependency>
          <groupId>org.apache.shiro</groupId>
          <artifactId>shiro-web</artifactId>
          <version>1.2.2</version>
        </dependency>
        <dependency>
          <groupId>org.apache.shiro</groupId>
          <artifactId>shiro-spring</artifactId>
          <version>1.2.2</version>
        </dependency>
        <dependency>
          <groupId>org.apache.shiro</groupId>
          <artifactId>shiro-ehcache</artifactId>
          <version>1.2.2</version>
        </dependency>

3.添加配置文件,shiro.ini,放在resources目录下,模拟从数据库中查询登录名称和密码。
INI配置文件是一种key/value的键值对配置,提供了分类的概念,每一个类中的key不可重复,#号代表注释,shiro.ini文件默认在/WEB-INF/ 或classpath下,shiro会自动查找,INI配置文件一般适用于用户少且不需要在运行时动态创建的情景下使用。

ini配置中主要配置有四大类:
main:提供了对根对象 securityManager 及其依赖的配置
users:提供了对用户/密码及其角色的配置,用户名=密码,角色 1,角色 2
roles:提供了角色及权限之间关系的配置,角色=权限 1,权限 2
urls:用于 web,提供了对 web url 拦截相关的配置,url=拦截器[参数],拦截器

目前只配置user

[user]
admin=111
muma=222

4.创建一个测试类

 import org.apache.shiro.SecurityUtils;
    import org.apache.shiro.authc.UsernamePasswordToken;
    import org.apache.shiro.config.IniSecurityManagerFactory;
    import org.apache.shiro.mgt.SecurityManager;
    import org.apache.shiro.subject.Subject;
    import org.apache.shiro.util.Factory;
    public class ShiroTest1 {
        public static void main(String[] args) {
            //读取配置文件,初始化SecurityManager工厂
            Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
            //获取securityManager实例
            SecurityManager securityManager = factory.getInstance();
            //把securityManager实例绑定到SecurityUtils
            SecurityUtils.setSecurityManager(securityManager);
            //得到当前执行的用户
            Subject subject = SecurityUtils.getSubject();
            //创建token令牌,用户名/密码
            UsernamePasswordToken token = new UsernamePasswordToken("admin","222");
            try{
                //身份验证
                subject.login(token);
                System.out.println("身份登录成功! ");
            }catch(Exception e){
                e.printStackTrace();
                System.out.println("身份登录失败!");
            }
            //退出
            subject.logout();
        }
    }

首先我输入正确的用户名admin,密码111,输出结果如下:
在这里插入图片描述
输入错误的用户名或密码,输出结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值