返回顶部
首页 > 资讯 > 精选 >Shiro中的Realm怎么使用
  • 411
分享到

Shiro中的Realm怎么使用

2023-06-19 13:06:33 411人浏览 安东尼
摘要

这篇文章主要介绍“shiro中的Realm怎么使用”,在日常操作中,相信很多人在Shiro中的Realm怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shiro中的Realm怎么使用”的疑惑有所帮助!

这篇文章主要介绍“shiro中的Realm怎么使用”,在日常操作中,相信很多人在Shiro中的Realm怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shiro中的Realm怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Realm的继承关系

通过查看类的继承关系,我们发现 Realm 的子类实际上有很多种,这里我们就来看看有代表性的几种:

IniRealm

可能我们并不知道,实际上这个类在我们第二篇文章中就已经用过了。这个类一开始就有如下两行定义:

public static final String USERS_SECTioN_NAME = "users";
public static final String ROLES_SECTION_NAME = "roles";
 

这两行配置表示 shiro.ini 文件中,[users] 下面的表示表用户名密码还有角色,[roles] 下面的则是角色和权限的对应关系。

PropertiesRealm

PropertiesRealm 则规定了另外一种用户、角色定义方式,如下:

user.user1=passWord,role1 role.role1=permission1

JdbcRealm

这个顾名思义,就是从数据库中查询用户的角色、权限等信息。打开 JdbcRealm 类,我们看到源码中有如下几行:

protected static final String DEFAULT_AUTHENTICATION_QUERY = "select password from users where username = ?";
protected static final String DEFAULT_SALTED_AUTHENTICATION_QUERY = "select password, password_salt from users where username = ?";
protected static final String DEFAULT_USER_ROLES_QUERY = "select role_name from user_roles where username = ?";
protected static final String DEFAULT_PERMISSIONS_QUERY = "select permission from roles_permissions where role_name = ?";
 

根据这几行预设的 sql 我们就可以大致推断出数据库中表的名称以及字段了,当然,我们也可以自定义 SQL。JdbcRealm 实际上是 AuthenticatingRealm 的子类,关于 AuthenticatingRealm 我们在后面还会详细说到,这里先不展开。接下来我们就来详细说说这个 JdbcRealm。

 

JdbcRealm

准备工作

使用 JdbcRealm,涉及到数据库操作,要用到数据库连接池,这里我使用 Druid 数据库连接池,因此首先添加如下依赖:

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>RELEASE</version>
</dependency>
<dependency>
   <groupId>mysql</groupId>
   <artifactId>Mysql-connector-java</artifactId>
   <version>5.1.27</version>
</dependency>
 

数据库创建

想要使用 JdbcRealm,那我首先要创建数据库,根据 JdbcRealm 中预设的 SQL,我定义的数据库表结构如下:

Shiro中的Realm怎么使用  
p309

这里为了大家能够直观的看到表的关系,我使用了外键,实际工作中,视情况而定。然后向表中添加几条测试数据。数据库脚本小伙伴可以在 GitHub 上下载到(https://github.com/lenve/shiroSamples/blob/v4/shiroDemo.sql)。

配置文件处理

然后将 shiro.ini 中的所有配置注释掉,添加如下注释:

jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
dataSource=com.alibaba.druid.pool.DruidDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://localhost:3306/shiroDemo
dataSource.username=root
dataSource.password=123
jdbcRealm.dataSource=$dataSource
jdbcRealm.permissionsLookupEnabled=true
securityManager.realms=$jdbcRealm
 

这里的配置文件都很简单,不做过多赘述,小伙伴唯一需要注意的是 permissionsLookupEnabled 需要设置为 true,否则一会 JdbcRealm 就不会去查询权限用户权限。

测试

OK,做完上面几步就可以测试了,测试方式和第二篇文章中一样,我们可以测试下用户登录,用户角色和用户权限。

自定义查询 SQL

小伙伴们看懂了上文,对于自定义查询 SQL 就没什么问题了。我这里举一个简单的例子,比如我要自定义 authenticationQuery 对对应的 SQL,查看 JdbcRealm 源码,我们发现 authenticationQuery 对应的 SQL 本来是 select password from users where username = ? ,如果需要修改的话,比如说我的表名不是 users 而是 employee,那么在 shiro.ini 中添加如下配置即可:

jdbcRealm.authenticationQuery=select password from employee where username = ?

到此,关于“Shiro中的Realm怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Shiro中的Realm怎么使用

本文链接: https://lsjlt.com/news/296243.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Shiro中的Realm怎么使用
    这篇文章主要介绍“Shiro中的Realm怎么使用”,在日常操作中,相信很多人在Shiro中的Realm怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shiro中的Realm怎么使用”的疑惑有所帮助!...
    99+
    2023-06-19
  • Shiro Realm权限认证怎么实现
    这篇文章主要讲解了“Shiro Realm权限认证怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shiro Realm权限认证怎么实现”吧!shiro下载要学习 shiro,我们首先...
    99+
    2023-06-19
  • SpringMVC Shiro怎么使用
    今天小编给大家分享一下SpringMVC Shiro怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一.介绍Apach...
    99+
    2023-06-30
  • Springboot-Shiro该怎么使用
    Springboot-Shiro该怎么使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、依据官网快速搭建Quickstart1.1 配置pom.xml依赖 <...
    99+
    2023-06-22
  • Tomcat中的Realm有什么作用
    在Tomcat中,Realm的作用是用来处理用户认证和授权的。Realm负责验证用户的身份和权限,以便在应用程序中进行访问控制。通过...
    99+
    2024-03-08
    Tomcat Realm
  • 怎么在shiro使用ssm框架
    本篇文章为大家展示了怎么在shiro使用ssm框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.在pom.xml中引入依赖<!--  shiro -->...
    99+
    2023-06-14
  • 使用shiro怎么对INI进行配置
    这期内容当中小编将会给大家带来有关使用shiro怎么对INI进行配置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。根对象SecurityManager从之前的Shiro架构图可以看出,Shiro是从根对象...
    99+
    2023-05-31
    shiro ini
  • springboot整合shiro之thymeleaf使用shiro标签的方法
    thymeleaf介绍 简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较与其他的模板引擎,它有如下三个极...
    99+
    2024-04-02
  • Java中Apache Shiro安全框架怎么用
    这篇文章将为大家详细讲解有关Java中Apache Shiro安全框架怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Shiro简介:Apache Shiro是一个Java的安全(权限)框架。Sh...
    99+
    2023-06-25
  • springboot+thymeleaf+shiro标签怎么用
    本篇内容介绍了“springboot+thymeleaf+shiro标签怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、pom中加入...
    99+
    2023-06-29
  • Java安全框架——Shiro的使用详解(附springboot整合Shiro的demo)
    目录Shiro简介 Shiro快速入门 SpringBoot-Shiro整合(最后会附上完整代码) 附上最后的完整代码 Shiro整合mybatis 认证搞完了,我们再来看看授权 S...
    99+
    2024-04-02
  • SpringBoot中怎么对Shiro进行整合
    本篇内容介绍了“SpringBoot中怎么对Shiro进行整合”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!原生的整合创建项目创建一个 Sp...
    99+
    2023-06-08
  • 怎么用SSSD和Realm集成Ubuntu到Samba4 AD DC
    小编给大家分享一下怎么用SSSD和Realm集成Ubuntu到Samba4 AD DC,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!要求:在 Ubuntu 上用 Samba4 创建一个活动目录架构第 1 步:初始配置 在把...
    99+
    2023-06-16
  • Android开发-使用Realm数据库实现App中的收藏功能
    前 言 App数据持久化功能是每个App必不可少的功能,而Android最常用的数据持久化方式主要有以下的五种方式: 使用SharedPre...
    99+
    2022-06-06
    android开发 realm app Android
  • springBoot中shiro的302跳转问题怎么解决
    本篇内容介绍了“springBoot中shiro的302跳转问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springBoot前...
    99+
    2023-06-22
  • SpringMVC+Shiro的基本使用及功能介绍
    目录一.介绍二.基本功能三.使用Maven包四.用户登录五.Reaml六.登录失败次数限制七.退出登录八.创建Ecache缓存以及时效一.介绍 Apache Shiro是Java的一...
    99+
    2024-04-02
  • jfinal中stateless模式怎么嵌入shiro验证
    这篇文章主要讲解了“jfinal中stateless模式怎么嵌入shiro验证”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jfinal中stateless模式怎么嵌入shiro验证”吧!S...
    99+
    2023-07-02
  • Android使用Realm数据库实现App中的收藏功能(代码详解)
    前 言 App数据持久化功能是每个App必不可少的功能,而Android最常用的数据持久化方式主要有以下的五种方式: 使用SharedPreferences存储数据; ...
    99+
    2022-06-06
    realm app Android
  • springboot中怎么利用shiro实现多验证登录功能
    springboot中怎么利用shiro实现多验证登录功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 首先新建一个shiroConfig shiro的配置类...
    99+
    2023-06-20
  • web开发安全框架中的Apache Shiro的应用是怎样的
    今天给大家介绍一下web开发安全框架中的Apache Shiro的应用是怎样的。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。web开发安全框架中的Apache...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作