![9a7945c7acb1327cf1e7861e55e6e950.png](https://i-blog.csdnimg.cn/blog_migrate/9fa19e1451ba149b511cc6c9766025b8.jpeg)
本文我们来通过一个简单的案例,先来看看 shiro 中登录操作的一个基本用法。
shiro下载
要学习 shiro,我们首先需求去 shiro 官网下载 shiro,官网地址地址 https://shiro.apache.org/,截至本文写作时,shiro 的最新稳定版本为 1.4.0 ,本文将采用这个版本。当然,shiro 我们也可以从 github 上下载到源码。两个源码下载地址如下:
- apache shiro
- github-shiro
上面我主要是和小伙伴们介绍下源码的下载,并没有涉及到 jar 包的下载,jar 包我们到时候直接使用 maven 即可。
创建演示工程
这里我们先不急着写代码,我们先打开刚刚下载到的源码,源码中有一个samples目录,如下:
![17261c018c7665726ab177cbcafdf98f.png](https://i-blog.csdnimg.cn/blog_migrate/be9aa7e2ac122c6592c37af35bd92d90.jpeg)
这个 samples 目录是官方给我们的一些演示案例,其中有一个 quickstart 项目,这个项目是一个 maven 项目,参考这个 quickstart ,我们来创建一个自己的演示工程。
- 首先使用 maven 创建一个 JavaSE 工程
- 工程创建成功后在pom文件中添加如下依赖:
org.apache.shiroshiro-allRELEASE
- 配置用户
参考 quickstart 项目中的 shiro.ini 文件,我们来配置一个用户,配置方式如下:首先在 resources 目录下创建一个 shiro.ini 文件,文件内容如下:
[users]sang=123,admin[roles]admin=*
以上配置表示我们创建了一个名为 sang 的用户,该用户的密码是 123 ,该用户的角色是 admin ,而 admin 具有操作所有资源的权限。
- 执行登录
OK,做完上面几步之后,我们就可以来看看如何实现一次简单的登录操作了。这个登录操作我们依然是参考 quickstart 项目中的类来实现,首先我们要通过 shiro.ini 创建一个 SecurityManager ,再将这个 SecurityManager 设置为单例模式,如下:
Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini");org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();SecurityUtils.setSecurityManager(securityManager);
如此之后,我们就配置好了一个基本的 Shiro 环境,注意此时的用户和角色信息我们配置在 shiro.ini 这个配置文件中,接下来我们就可以获取一个 Subject 了,这个 Subject 就是我们当前的用户对象,获取方式如下:
Subject currentUser = SecurityUtils.getSubject();
拿到这个用户对象之后,接下来我们可以获取一个 session 了,这个 session 和我们 web 中的 HttpSession 的操作基本上是一致的,不同的是,这个 session 不依赖任何容器,可以随时随地获取,获取和操作方式如下:
//获取sessionSession session = currentUser.getSession();//给session设置属性值session.setAttribute("someKey