场景

shiro

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

三个核心组件:Subject, SecurityManager 和 Realms.
Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。
  Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
  SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
  Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
  从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
  Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。

实现

1.新建Maven项目

打开Eclipse,新建Maven项目,打开pom.xml,添加项目依赖。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.badao.shiro</groupId><artifactId>shiroTest</artifactId><version>0.0.1-SNAPSHOT</version><name>shiroTest</name><dependencies><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.2.4</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.12</version></dependency></dependencies>
</project>

2.新建配置文件

在resource下新建问件shiro.ini

[users]
badao=123
liumang=456

新建两个用户。

3.编写测试类

项目下新建包com.badao.shiro,包下新建HelloShiro.java

package com.badao.shiro;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.util.Factory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;public class HelloShiro {public static void main(String[] args) {//读取配置文件,初始化化SecurityManager工厂Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");//获取securityManager实例SecurityManager securityManager = factory.getInstance();//将securityManager实例绑定到SecurityUtilsSecurityUtils.setSecurityManager(securityManager);//获取当前用户Subject currentUser = SecurityUtils.getSubject();//创建token令牌,用户名 密码UsernamePasswordToken token = new UsernamePasswordToken("badao","123");try {//身份认证 登录 currentUser.login(token);System.out.println("身份认证成功");} catch (AuthenticationException e) {e.printStackTrace();System.out.println("身份认证失败");}//退出currentUser.logout();}
}

4.项目目录

效果

输入错误用户名

输入正确用户名

源码下载

https://download.csdn.net/download/badao_liumang_qizhi/11171674

从实例入手Shiro并实现HellloWorld相关推荐

  1. 从实例入手学习Shiro自定义Realm实现查询数据进行验证

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 在上面已经实现整合 ...

  2. 从实例入手学习Shiro的会话机制

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 在上面已经实现整合 ...

  3. 实例入手vue-router重定向

    场景 当一进来某一个APP,想让其显示某个页面,所以需要在index.vue使用重定向使其重定向到初始页面. 效果 前文 从实例入手学习Vue-router的使用-实现音乐导航菜单切换 https:/ ...

  4. CMake 入门实战,从实例入手,讲解 CMake 的常见用法,例如aux_source_directory的用法

    http://www.hahack.com/codes/cmake/ https://sourceforge.net/projects/qmake2cmake/ --qmake转换cmake小工具 什 ...

  5. 从实例入手学习Shiro与Web的整合

    场景 Shiro官网关于Web整合文档: http://shiro.apache.org/web.html#Web-configuration W3Cschool Shiro Web集成: https ...

  6. java shiro实例_Apache Shiro入门实例

    Shiro是一个强大灵活的开源安全框架,提供身份验证.授权.会话管理.密码体系. 1.先创建一个Maven项目 2.配置pom http://maven.apache.org/xsd/maven-4. ...

  7. Thymeleaf提取公共页面(从实例入手,以inspinia模板为例)

    场景 使用Thymelaf 时,可以提取公共页面,比如侧边栏.需要公共引入的css.js文件.页脚等都可以提取出来.只编写业务页面的内容部分即可. 三种不同引入方式的区别 th:insert:将代码块 ...

  8. 深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架

    这篇博客是hibernate学习的第一篇,主要简单介绍hibernate框架,之后简单说一下hibernate的目录结构,最后写一个简单的hibernate实例.通过这三步来简单的认识一下hibern ...

  9. java shiro实例_spring+shiro 整合实例代码详解

    一.添加相关依赖 org.apache.shiro shiro-core 1.2.1 org.apache.shiro shiro-web 1.2.1 org.apache.shiro shiro-e ...

最新文章

  1. 下1000个用户的云计算革命
  2. PHP设计模式(6)迭代器模式
  3. Windows下安装Python模块时环境配置
  4. 大规模机器学习在LinkedIn预测模型中的应用实践
  5. 小云(云层-陈霁)的发展史
  6. 拓端tecdat|R语言中的模拟过程和离散化:泊松过程和维纳过程
  7. paip.解决 Gtk-CRITICAL **: IA__gtk_widget_show: assertion `GTK_IS_WIDGET (widget)' failed
  8. 例外被抛出且未被接住问题
  9. 解决npx @electron-forge/cli import时提示缺失依赖
  10. GLES3.0中文API-glMemoryBarrier
  11. 如果时间不够 ,无法进行充分的测试怎么办?
  12. 前端入门视频笔记 CSS3(一) P61-92
  13. 什么品牌的蓝牙耳机音质好?四款高音质蓝牙耳机推荐
  14. Android 手机听筒Earpiece和扬声器speaker切换
  15. unity实现炮弹运动轨迹(抛物线)
  16. 花菁染料|cas146368-08-3-齐岳生物
  17. Hadoop3.3.3完全分布式安装(Centos7.x)(保姆教程)
  18. 保利清能西海岸收房步骤和费用明细
  19. 定义一个图形类及其子类,计算其面积和周长
  20. 云计算学习 - 基本概念

热门文章

  1. dom定义了访问html文档对象的,HTML DOM (文档对象模型)
  2. 项目管理:五大过程组十大领域
  3. 并发集合和普通集合以及安全集合的区别
  4. JUC系列(十) | ForkJoin框架 并行处理任务
  5. html主题居中用什么命令,html – 如何居中的元素 – 使用什么而不是align:center属性?...
  6. python服务端开发调试日志系统_Python:如何进行延迟调试日志记录
  7. C语言函数sscanf()的用法
  8. ajax学生校验学号,ajax校验数据库数据是否存在
  9. spring aop实例讲解_小实例理解Spring中的AOP----面向切面编程
  10. python修改数据库_python mysql修改数据库数据库