Shiro学习之HelloWord

为什么学习shiro,是因为在工作中需要使用,后面看到shiro的介绍,我还是觉得就算是工作中不要使用到,还是值得学习.有什么写的不好的,希望大家多多指导!

Apache Shiro(日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。
Shiro为解决下列问题(我喜欢称它们为应用安全的四要素)提供了保护应用的API:
认证 - 用户身份识别,常被称为用户“登录”;
授权 - 访问控制;
密码加密 - 保护或隐藏数据防止被偷窥;
会话管理 - 每用户相关的时间敏感的状态。
Shiro还支持一些辅助特性,如Web应用安全、单元测试和多线程,它们的存在强化了上面提到的四个要素

最重要的一张图:
这里写图片描述

  • Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
  • Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
  • Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
  • Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
  • Web Support:Web支持,可以非常容易的集成到Web环境;
  • Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
  • Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
  • Testing:提供测试支持;
  • Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
  • Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

以上就是shiro大概的介绍,我就只说这样多,其实都是在网上搜的,我英文不好,看英文文档看的有点心累.

以下就是shiro的HelloWord了

准备工作,我是使用的maven,所以在maven仓库中找到shiro的包的依赖

新建一个maven工程,新建简单的工程即可,将下面的依赖添加进去即可,我没有加入slf4j的实现

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

在资源文件夹下面新建shiro.ini配置方法
语法规则如下:
‘name’=’pwd’
‘name’=’pwd’
具体看代码:

[users]
yyt=123

新建一个HolleWord类,写上main方法,

package com.kingsky;


import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
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 HolleWord {
    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 passwordToken=new UsernamePasswordToken("yyt", "123");
        //验证登录  会抛出异常
        try {
            subject.login(passwordToken);
            System.out.println("身份验证成功!!!");
        } catch (AuthenticationException e) {
            e.printStackTrace();
            System.out.println("身份验证失败!!!!");
        }
        //退出登录
        subject.logout();

    }
}

点击运行,查看控制台输入的文字:
这里写图片描述
警告就是没有加入slf4j的实现,然后还要加入配置文件,
加入说在这行代码中修改pwd或者是name

UsernamePasswordToken passwordToken=new UsernamePasswordToken("yyt", "1234");

则报错,意思是匹配不成功
这里写图片描述

最近有没有学习微信小程序的开发的, 我最近在学习了,后面看看有时间,出出我学习微信小程序的心得博客!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值