Shiro框架主要用于应用程序的安全管理,包括认证、授权、会话管理等功能。以下是Shiro框架的具体使用步骤:

  1. 引入Shiro依赖:在项目中引入Shiro的相关依赖,例如Shiro-core、Shiro-web等。
  2. 配置Shiro环境:在Web应用程序中,需要在web.xml文件中配置ShiroFilter过滤器,以及相应的Shiro配置文件(如shiro.ini或shiro.xml)。
  3. 编写Realm对象:Realm对象是Shiro框架与应用程序之间的桥梁,负责处理安全相关的操作,如认证、授权等。需要根据实际需求编写一个继承自org.apache.shiro.realm.Realm的类,并实现其中的doGetAuthenticationInfo和doGetAuthorizationInfo方法。
  4. 实现认证操作:在Realm对象中实现doGetAuthenticationInfo方法,该方法用于对用户进行身份认证。在该方法中,可以根据用户名和密码等信息从数据库或其他数据源中获取用户信息,并与用户提供的信息进行比对,以确定认证是否成功。
  5. 实现授权操作:在Realm对象中实现doGetAuthorizationInfo方法,该方法用于为用户分配角色和权限。在该方法中,可以根据用户的角色和权限信息进行处理。
  6. 通过SecurityManager对象进行访问控制:在应用程序中,通过SecurityManager对象来进行访问控制等操作。可以通过SecurityUtils.getSubject()方法获取当前用户的Subject对象,并调用其相应的方法进行认证、授权等操作。
  7. 实现会话管理:在应用程序中可以使用Shiro提供的Session管理器来管理会话。可以通过SecurityUtils.getSubject().getSession()方法获取当前用户的Session对象,并对其进行操作。

总的来说,Shiro框架的使用主要包括引入Shiro依赖、配置Shiro环境、编写Realm对象、实现认证和授权操作、通过SecurityManager对象进行访问控制,以及实现会话管理等步骤。

Shiro框架的认证流程主要包括以下几个步骤:

  1. 提交认证请求:用户在登录页面输入用户名和密码等身份验证信息,提交给Shiro框架进行认证。
  2. 创建Token对象:Shiro创建一个Token对象,用于表示用户提供的身份验证信息。Token对象通常包含用户名和密码等信息。
  3. 执行认证操作:Shiro调用相应的Realm对象进行认证操作。Realm对象是Shiro框架与应用程序之间的桥梁,负责处理安全相关的操作,如认证、授权等。Realm对象会根据Token对象中的用户名和密码等信息从数据库或其他数据源中获取用户信息,并与Token对象中的信息进行比对,以确定认证是否成功。
  4. 认证成功处理:如果认证成功,Shiro会将用户信息保存在SecurityUtils对象中,以便后续的访问控制等操作使用。此外,可以通过设置Shiro配置文件来实现认证成功后的跳转操作。
  5. 认证失败处理:如果认证失败,Shiro会抛出AuthenticationException异常,可以根据需要对该异常进行捕获和处理,例如返回登录页面并提示认证失败信息等。

总的来说,Shiro框架的认证流程主要包括提交认证请求、创建Token对象、执行认证操作、认证成功处理和认证失败处理等步骤。

以下是Shiro框架的一个简单示例,用于演示用户身份认证的过程:

配置Shiro环境
在web.xml文件中添加如下配置:

<filter><filter-name>shiroFilter</filter-name><filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter><filter-mapping><filter-name>shiroFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

同时,创建shiro.ini或shiro.xml配置文件,用于配置Shiro的安全策略等信息。

编写Realm对象

public class MyRealm extends AuthorizingRealm {@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {String username = (String) principals.fromRealm(getName()).iterator().next();SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();// 从数据库中获取用户角色和权限,并加入info对象中return info;}@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {String username = (String) token.getPrincipal();String password = new String((char[]) token.getCredentials());// 从数据库中获取用户信息,并与输入的用户名和密码进行比对if (!"admin".equals(username)) {throw new UnknownAccountException(); // 用户不存在}if (!"123456".equals(password)) {throw new IncorrectCredentialsException(); // 密码错误}// 认证成功,返回AuthenticationInfo对象return new SimpleAuthenticationInfo(username, password, getName());}
}

以上代码中,doGetAuthorizationInfo方法用于为用户分配角色和权限,而doGetAuthenticationInfo方法则用于对用户进行身份认证。在这里,我们直接将用户名和密码固定为"admin"和"123456",实际应用中需要从数据库或其他数据源中获取。

实现认证操作

public class TestShiro {public static void main(String[] args) {// 获取当前用户Subject对象Subject currentUser = SecurityUtils.getSubject();// 如果当前用户未经过身份认证,则进行认证操作if (!currentUser.isAuthenticated()) {UsernamePasswordToken token = new UsernamePasswordToken("admin", "123456");try {currentUser.login(token); // 执行登录操作System.out.println("登录成功!");} catch (UnknownAccountException e) {System.out.println("用户不存在!");} catch (IncorrectCredentialsException e) {System.out.println("密码错误!");} catch (AuthenticationException e) {System.out.println("登录失败!");}}}
}

以上代码中,我们首先获取当前用户的Subject对象,然后根据用户名和密码创建一个UsernamePasswordToken对象,并调用currentUser.login(token)方法执行登录操作。如果登录成功,则输出"登录成功!";否则根据不同的异常类型输出相应的错误消息。

shiro框架的使用流程相关推荐

  1. Shiro框架:授权流程、授权方式、Shiro授权入门程序、自定义Realm进行授权

    一.Shiro授权: 1.授权与权限: (1)授权:访问控制,必须具有该资源的访问权限才可以访问该资源. (2)权限模型:标准权限数据模型包括 :用户.角色.权限(包括资源和权限).用户角色关系.角色 ...

  2. 用户登录的详细流程(三)Shiro框架

    用户登录的详细流程(三)Shiro框架 Shiro框架是一个功能强大的java安全框架,执行身份验证,授权,加密和会话处理. ** 1.核心架构 Authentication (认证):用户身份认证- ...

  3. 权限管理(shiro框架)

    为什么80%的码农都做不了架构师?>>>    1. 权限管理的流程 页面中的菜单和按钮就是我们访问某个功能的入口. 无论是访问菜单或者按钮,要想完成某个业务操作,实际上是需要发送一 ...

  4. Spring集成Shiro框架实战

    文章目录 一:什么是Shiro框架 二:Shiro框架简介 1.Shiro基础功能点介绍 2.Shiro的工作原理 3.Shiro的内部工作结构 4.Shiro的身份认证流程 三:Spring集成Sh ...

  5. Shiro介绍及主要流程

    Shiro介绍及主要流程 什么是Shiro Apache Shiro是一个强大且灵活的开源安全框架,易于使用且好理解,撇开了搭建安全框架时的复杂性. Shiro可以帮助我们做以下几件事: 认证使用者的 ...

  6. SpringBoot2.0 整合 Shiro 框架,实现用户权限管理

    GitHub源码地址:知了一笑 https://github.com/cicadasmile/middle-ware-parent 一.Shiro简介 1.基础概念 Apache Shiro是一个强大 ...

  7. shiro框架---shiro配置介绍(一)

    接上一篇文章shiro框架-通过系统介绍shiro框架中的实现逻辑   项目已分享到GitHub上,如果需要的可以看下,springboot+shiro项目Git下载地址. shiro在springb ...

  8. 从权限到shiro框架

    说明:本文很多观点和内容来自互联网以及各种资料,如果侵犯了您的权益,请及时联系我,我会删除相关内容. 权限管理 在说具体的框架之前,先把必要的理论知识简单的和大家交代一下. 什么是权限管理 基本上涉及 ...

  9. Shiro框架在项目中的应用

    1.Shiro 框架简介 Shiro 概述 Shiro 是Apache公司推出一个权限管理框架,其内部封装了项目中认证,授权,加密,会话等逻辑操作,通过Shiro框架可以简化我们项目权限控制逻辑的代码 ...

最新文章

  1. 洛谷 P1055 ISBN号码【字符串+模拟】
  2. Android中Context
  3. redis关键字删除_Redis批量删除key的小技巧
  4. Nboot中nand flash控制器参数TACLS、TWRPH0和TWRPH1的确定(基于K9F1208U0B)
  5. ios 持续获取定位 高德地图_概述-iOS 定位SDK | 高德地图API
  6. 变动性算法源代码分析与使用示例(copy_backward、 transform、 replace_copy_if 等)
  7. Linux下编译FFMpeg
  8. plsql dev中Dynamic Performance Tables not accessible分析解决(转载)
  9. Eclipse中,对工作空间中的项目进行分组(在查询中,也可也选择这个分组)。
  10. mysql archive分区_MYSQL-分区表
  11. 信号与信息处理专业属于计算机类吗,信号与信息处理
  12. vue项目开发实战案例
  13. 【已解决】兼容多个版本CUDA
  14. Android Hal层回调APP应用接口
  15. LVM挂盘(centos7 使用parted命令分区挂盘操作详细)
  16. 2023年软考初级程序员
  17. 【SQL实战经验一】:SQL语句中存在英文的单引号、双引号问题
  18. java 抽象类 模板_java抽象类的体现-模板模式
  19. 挂件巡检机器人_一“人”分饰多角 京东新一代巡检机器人上岗!
  20. Invalid param tag: Cannot load command parameter [robot_description] 出错解决

热门文章

  1. Excel——快速删除空白行、空白单元格
  2. 笔记本电脑开启热点共享,却显示无IP分配
  3. PHP内核的存储机制(分离/改变)
  4. 撩对象神器,SpringBoot每天5:20定时发送浪漫语句给女朋友邮箱
  5. 黑科技: 高性能计算BurstBuffer技术详解
  6. 吐血分享:QQ群霸屏技术(初级篇)
  7. halcon在image上写文字
  8. 上海第五次Spark meetup会议资料分享
  9. 【2】数据结构与算法 —— 选择排序算法
  10. 领域应用 | 中医临床术语系统V2.0在线发布啦!