shiro包_Shiro--从一个简单的 Realm 开始权限认证
本文我们来通过一个简单的案例,先来看看 shiro 中登录操作的一个基本用法。
shiro下载
要学习 shiro,我们首先需求去 shiro 官网下载 shiro,官网地址地址 https://shiro.apache.org/,截至本文写作时,shiro 的最新稳定版本为 1.4.0 ,本文将采用这个版本。当然,shiro 我们也可以从 github 上下载到源码。两个源码下载地址如下:
- apache shiro
- github-shiro
上面我主要是和小伙伴们介绍下源码的下载,并没有涉及到 jar 包的下载,jar 包我们到时候直接使用 maven 即可。
创建演示工程
这里我们先不急着写代码,我们先打开刚刚下载到的源码,源码中有一个samples目录,如下:
这个 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
shiro包_Shiro--从一个简单的 Realm 开始权限认证相关推荐
- swt包下载,swt包引入(一个简单的SWT程序实例及详解)
让我们从简单的 HelloWorld 应用程序开始. swt包下载可以在eclipse网站上下 进到下面这个地址里 http://www.eclipse.org/downloads/download. ...
- R语言机器学习 MLR包(以及一个简单的案例实现)
最近在尝试用Rstudio写Ensemble Learning的代码,尝试了mlr(2019年后更新的部分在mlr3中,mlr不再更新)和caret两个包,做点笔记. mlr的功能更集中于机器学习接口 ...
- python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?
全文共2800字,预计学习时长6分钟 在繁忙的工作生活中,我们经常忘记给所爱的人发WhatsApp.本教程将使用Python包Twilio编写一个简单的Python脚本来发送WhatsApp消息.我们 ...
- iris流程图_如何搭建一个简单的机器学习流水线?
阅读此分步教程,学会通过导入scikit-learn包来搭建一个简单的机器学习流水线(pipeline) 一个机器学习模型中,有很多可移动的组件需要被组合在一起,模型才能被执行并成功的得到结果.把机器 ...
- 用ggplot包画一个简单饼图
用ggplot包画一个简单饼图 首先用library函数加载ggplot2包 1 2 3 4 library(ggplot2) library(dplyr) library(tidyr) librar ...
- 实例学习SSIS(一)--制作一个简单的ETL包
http://www.cnblogs.com/tenghoo/archive/2009/10/archive/2009/10/archive/2009/10/16/ssis_lookup.html 导 ...
- [shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
本文地址:http://blog.csdn.net/sushengmiyan/article/details/39933993 shiro官网: http://shiro.apache.org/ sh ...
- 练习1:创建一个简单的银行程序包
练习目标-Java 语言中面向对象的封装性及构造器的使用. 任务 在这个练习里,创建一个简单版本的(账户类)Account类.将这个源文件放入banking程序包中.在创建单个帐户的默认程序包中,已编 ...
- 在 GitHub 上创建一个 Swift 包:其实一点也不简单
作者:Erica Sadun,原文链接,原文日期:2015-12-27 译者:DianQK:校对:Cee:定稿:numbbbbb 我觉得我不需要再介绍 Git 了,大家应该已经很熟悉了. Packag ...
最新文章
- 【驱动】linux下I2C驱动架构全面分析
- centos7 vim查找_实战 | 一文掌握Centos7下搭建Django前后端分离项目部署环境
- [世界杯]世界杯的哲学思想
- kali启动cobaltstrike_Cobalt Strike MetaSploit 联动
- 微软人物立方——效果还很漂亮的
- Django ORM QuerySet集合对象的特性
- Laravel.com 中国镜像、中文站点
- postgresql安装hypopg
- 刚刚!中科院主导的国产编程语言木兰负责人回应了!承认32位机器上,是基于Python二次开发!...
- noob之MySQL基本查询
- 网易邮箱大师代收gmail
- bootstrap之双日历时间段选择控件—daterangepicker
- 微信小程序navigateBack返回数据
- Web3的企业如何用Token激励员工?
- 三维场景中创建镜面反射效果(three.js实战9)
- 自适应直方图均衡(CLAHE) 代码及详细注释【OpenCV】
- 《集体智慧编程》读书笔记10
- FYD-Focus Your Distribution-关注你的分布:异常检测和定位的从粗到细的非对比性学习-FYD
- 哈工大软件构造lab2实验报告
- Artitalk说说心情发布页面(个性定制)