本文我们来通过一个简单的案例,先来看看 shiro 中登录操作的一个基本用法。

shiro下载

要学习 shiro,我们首先需求去 shiro 官网下载 shiro,官网地址地址 https://shiro.apache.org/,截至本文写作时,shiro 的最新稳定版本为 1.4.0 ,本文将采用这个版本。当然,shiro 我们也可以从 github 上下载到源码。两个源码下载地址如下:

  1. apache shiro
  2. 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 开始权限认证相关推荐

  1. swt包下载,swt包引入(一个简单的SWT程序实例及详解)

    让我们从简单的 HelloWorld 应用程序开始. swt包下载可以在eclipse网站上下 进到下面这个地址里 http://www.eclipse.org/downloads/download. ...

  2. R语言机器学习 MLR包(以及一个简单的案例实现)

    最近在尝试用Rstudio写Ensemble Learning的代码,尝试了mlr(2019年后更新的部分在mlr3中,mlr不再更新)和caret两个包,做点笔记. mlr的功能更集中于机器学习接口 ...

  3. python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?

    全文共2800字,预计学习时长6分钟 在繁忙的工作生活中,我们经常忘记给所爱的人发WhatsApp.本教程将使用Python包Twilio编写一个简单的Python脚本来发送WhatsApp消息.我们 ...

  4. iris流程图_如何搭建一个简单的机器学习流水线?

    阅读此分步教程,学会通过导入scikit-learn包来搭建一个简单的机器学习流水线(pipeline) 一个机器学习模型中,有很多可移动的组件需要被组合在一起,模型才能被执行并成功的得到结果.把机器 ...

  5. 用ggplot包画一个简单饼图

    用ggplot包画一个简单饼图 首先用library函数加载ggplot2包 1 2 3 4 library(ggplot2) library(dplyr) library(tidyr) librar ...

  6. 实例学习SSIS(一)--制作一个简单的ETL包

    http://www.cnblogs.com/tenghoo/archive/2009/10/archive/2009/10/archive/2009/10/16/ssis_lookup.html 导 ...

  7. [shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39933993 shiro官网: http://shiro.apache.org/ sh ...

  8. 练习1:创建一个简单的银行程序包

    练习目标-Java 语言中面向对象的封装性及构造器的使用. 任务 在这个练习里,创建一个简单版本的(账户类)Account类.将这个源文件放入banking程序包中.在创建单个帐户的默认程序包中,已编 ...

  9. 在 GitHub 上创建一个 Swift 包:其实一点也不简单

    作者:Erica Sadun,原文链接,原文日期:2015-12-27 译者:DianQK:校对:Cee:定稿:numbbbbb 我觉得我不需要再介绍 Git 了,大家应该已经很熟悉了. Packag ...

最新文章

  1. 【驱动】linux下I2C驱动架构全面分析
  2. centos7 vim查找_实战 | 一文掌握Centos7下搭建Django前后端分离项目部署环境
  3. [世界杯]世界杯的哲学思想
  4. kali启动cobaltstrike_Cobalt Strike MetaSploit 联动
  5. 微软人物立方——效果还很漂亮的
  6. Django ORM QuerySet集合对象的特性
  7. Laravel.com 中国镜像、中文站点
  8. postgresql安装hypopg
  9. 刚刚!中科院主导的国产编程语言木兰负责人回应了!承认32位机器上,是基于Python二次开发!...
  10. noob之MySQL基本查询
  11. 网易邮箱大师代收gmail
  12. bootstrap之双日历时间段选择控件—daterangepicker
  13. 微信小程序navigateBack返回数据
  14. Web3的企业如何用Token激励员工?
  15. 三维场景中创建镜面反射效果(three.js实战9)
  16. 自适应直方图均衡(CLAHE) 代码及详细注释【OpenCV】
  17. 《集体智慧编程》读书笔记10
  18. FYD-Focus Your Distribution-关注你的分布:异常检测和定位的从粗到细的非对比性学习-FYD
  19. 哈工大软件构造lab2实验报告
  20. Artitalk说说心情发布页面(个性定制)

热门文章

  1. 软件测试的学习之路----计算机基础 (图片展示)
  2. 集合框架(Set容器)
  3. python使用redis_使用Python构建您的第一个Redis Hello World应用程序
  4. 怎么成为开源贡献者_为什么要成为开源的支持者
  5. opensource项目_最佳Opensource.com:艺术与设计
  6. 门萨智商测试_与Mensa建立更好的匹配解决方案
  7. (9)vue.js 指令(1)
  8. JS_模块的命名空间
  9. React 组件间传值的几种情形
  10. Bootstrap 图片的形状