返回顶部
首页 > 资讯 > 精选 >Shiro Realm权限认证怎么实现
  • 214
分享到

Shiro Realm权限认证怎么实现

2023-06-19 12:06:39 214人浏览 独家记忆
摘要

这篇文章主要讲解了“shiro Realm权限认证怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shiro Realm权限认证怎么实现”吧!shiro下载要学习 shiro,我们首先

这篇文章主要讲解了“shiro Realm权限认证怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shiro Realm权限认证怎么实现”吧!

shiro下载

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

  1. apache shiro

  2. github-shiro

上面我主要是和小伙伴们介绍下源码的下载,并没有涉及到 jar 包的下载,jar 包我们到时候直接使用 Maven 即可。

创建演示工程

这里我们先不急着写代码,我们先打开刚刚下载到的源码,源码中有一个samples目录,如下:

Shiro Realm权限认证怎么实现  

这个 samples 目录是官方给我们的一些演示案例,其中有一个 quickstart 项目,这个项目是一个 maven 项目,参考这个 quickstart ,我们来创建一个自己的演示工程。

  • 首先使用 maven 创建一个 JavaSE 工程
    工程创建成功后在pom文件中添加如下依赖:

<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>RELEASE</version>
</dependency>
 
  • 配置用户

参考 quickstart 项目中的 shiro.ini 文件,我们来配置一个用户,配置方式如下:首先在 resources 目录下创建一个 shiro.ini 文件,文件内容如下:

[users]
sang=123,admin
[roles]
admin=*
 

以上配置表示我们创建了一个名为 sang 的用户,该用户的密码是 123 ,该用户的角色是 admin ,而 admin 具有操作所有资源的权限。

  • 执行登录

OK,做完上面几步之后,我们就可以来看看如何实现一次简单的登录操作了。这个登录操作我们依然是参考 quickstart 项目中的类来实现,首先我们要通过 shiro.ini 创建一个 SecurityManager ,再将这个 SecurityManager 设置为单例模式,如下:

Factory<org.apache.shiro.mgt.SecurityManager> 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 不依赖任何容器,可以随时随地获取,获取和操作方式如下:

//获取session
Session session = currentUser.getSession();
//给session设置属性值
session.setAttribute("someKey", "aValue");
//获取session中的属性值
String value = (String) session.getAttribute("someKey");
 

说了这么多,我们的用户到现在还没有登录呢,Subject 中有一个 isAuthenticated 方法用来判断当前用户是否已经登录,如果 isAuthenticated 方法返回一个 false,则表示当前用户未登录,那我们就可以执行登陆,登录方式如下:

if (!currentUser.isAuthenticated()) {
   UsernamePassWordToken token = new UsernamePasswordToken("sang", "123");
   try {
       currentUser.login(token);
   } catch (UnknownAccountException uae) {
       log.info("There is no user with username of " + token.getPrincipal());
   } catch (IncorrectCredentialsException ice) {
       log.info("Password for account " + token.getPrincipal() + " was incorrect!");
   } catch (LockedAccountException lae) {
       log.info("The account for username " + token.getPrincipal() + " is locked.  " +
               "Please contact your administrator to unlock it.");
   }
   catch (AuthenticationException ae) {
   }
}
 

首先构造 UsernamePasswordToken ,两个参数就是我们的用户名和密码,然后调用 Subject 中的 login 方法执行登录,当用户名输错,密码输错、或者账户定等问题出现时,系统会通过抛异常告知调用者这些问题。

当登录成功之后,我们可以通过如下方式获取当前登陆用户的用户名:

log.info("User [" + currentUser.getPrincipal() + "] logged in successfully.");
 

我们也可以通过调用 Subject 中的 hasRole 和 isPermitted 方法来判断当前用户是否具备某种角色或者某种权限,如下:

if (currentUser.hasRole("admin")) {
   log.info("May the Schwartz be with you!");
} else {
   log.info("Hello, mere mortal.");
}
if (currentUser.isPermitted("lightsaber:wield")) {
   log.info("You may use a lightsaber ring.  Use it wisely.");
} else {
   log.info("Sorry, lightsaber rings are for schwartz masters only.");
}
 

最后,我们可以通过 loGout 方法注销本次登录,如下:

currentUser.logout();

感谢各位的阅读,以上就是“Shiro Realm权限认证怎么实现”的内容了,经过本文的学习后,相信大家对Shiro Realm权限认证怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Shiro Realm权限认证怎么实现

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

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

猜你喜欢
  • Shiro Realm权限认证怎么实现
    这篇文章主要讲解了“Shiro Realm权限认证怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shiro Realm权限认证怎么实现”吧!shiro下载要学习 shiro,我们首先...
    99+
    2023-06-19
  • Shiro:自定义Realm实现权限管理方式
    目录Shiro权限管理1、基于JavaSe的Shiro的基本使用1、导入shiro依赖2、创建shiro配置文件:shiro.ini3、shiro的基本使用4、shiro认证授权流程...
    99+
    2024-04-02
  • spring-shiro权限控制realm实战教程
    目录spring-shiro权限控制realm用户与角色实体Realm类Shiro 配置类控制器Serviceshiro权限不生效原因分析shiro遇到的坑问题原因:权限标签定义问题...
    99+
    2024-04-02
  • Shiro教程之三自定义Realm认证和授权(结合数据库)
    Shiro默认使用自带的IniRealm,IniRealm从ini配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义realm。 1,Realm接口      最基础的是Realm接口,CachingR...
    99+
    2021-02-20
    Shiro教程之三自定义Realm认证和授权(结合数据库) 数据库入门 数据库基础教程 数据库 mysql
  • Grafana怎么实现用户认证和权限管理
    在Grafana中,用户认证和权限管理可以通过以下步骤实现: 配置数据源:首先,您需要配置Grafana与数据源的连接。可以连接...
    99+
    2024-04-02
  • SpringBoot使用Sa-Token实现权限认证
    目录一、设计思路二、获取当前账号权限码集合三、权限校验四、角色校验五、拦截全局异常六、权限通配符七、如何把权限精确到按钮级?八、前端有了鉴权后端还需要鉴权吗?九、来个小示例,加深一下...
    99+
    2023-05-17
    SpringBoot Sa-Token权限认证 SpringBoot 权限认证
  • MongoDB的权限管理与用户认证怎么实现
    MongoDB的权限管理和用户认证是通过创建用户和设置角色来实现的。下面是MongoDB权限管理和用户认证的步骤: 创建管理员用...
    99+
    2024-05-07
    MongoDB
  • Spring Security(新版本)实现权限认证与授权
    学习新版SpringSecurity详细配置 一、Spring Security介绍1、Spring Security简介2、历史3、同款产品对比3.1、Spring Security3.2、...
    99+
    2023-09-14
    spring java 后端
  • golang进行简单权限认证的实现
    使用JWT进行认证 JSON Web Tokens (JWT) are a more modern approach to authentication. As the web ...
    99+
    2024-04-02
  • Mongodb中怎么实现认证鉴权
    本篇文章给大家分享的是有关Mongodb中怎么实现认证鉴权,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、Mongodb 的权限管理认识权限...
    99+
    2024-04-02
  • SpringBoot如何使用Sa-Token实现权限认证
    今天小编给大家分享一下SpringBoot如何使用Sa-Token实现权限认证的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-06
  • 详解springboot shiro jwt实现权限管理
    springboot + shiro + jwt (详情解析+代码实现)加密接口 设置权限 首先需要把shiro的几个配置类给下载好(我已经把需要的配置类给放到了github和网盘之...
    99+
    2024-04-02
  • Springboot整合Shiro怎么实现登录与权限校验
    这篇文章主要介绍“Springboot整合Shiro怎么实现登录与权限校验”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Springboot整合Shiro怎么实现登录与权限校验”文章能帮助大家解决问...
    99+
    2023-06-30
  • SpringBoot集成Spring security JWT实现接口权限认证
    1、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> ...
    99+
    2024-04-02
  • Springboot如何实现认证和动态权限管理
    今天小编给大家分享一下Springboot如何实现认证和动态权限管理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。知识点补充...
    99+
    2023-06-19
  • .NetCore实现JWT授权认证
    关于JWT的基本概念,如果有不清晰的同学,请点击这里,就不在这里赘述了。接下来聊聊JWT是怎么发挥作用的。 第一,安装nuget包 Microsoft.AspNetCore.Auth...
    99+
    2024-04-02
  • springboot集成shiro权限管理简单实现
    目录前言依赖配置Filter过滤器配置securityManager配置Realm配置密码加密测试前言 为了解决项目当中的权限管理问题,我们一般会选择引入spring securit...
    99+
    2022-11-13
    springboot集成shiro权限管理 springboot集成shiro
  • SpringBoot整合Shiro实现权限控制的代码实现
    1、SpringBoot整合Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。 1.1、shiro简介 shiro有个核心组...
    99+
    2024-04-02
  • PHP中怎么实现全站权限验证
    PHP中怎么实现全站权限验证,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。PHP全站权限验证代码示例:< html> <&...
    99+
    2023-06-17
  • Django中怎么实现用户认证与授权
    在Django中,用户认证和授权可以通过内置的认证系统来实现。以下是实现用户认证和授权的步骤: 创建用户模型:Django提供了...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作