shiro基础

2023-11-07

shiro基础

在这里插入图片描述
shiro中有三大核心架构,subjects,security manager,realms:分别代表,使用shiro的主体,核心安全管理器和数据和安全管理的连接。
使用shiro首先需要引入shiro需要的依赖,可以通过maven进行包管理,实现方式如下:

	<dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-core</artifactId>
      <version>1.2.4</version>
    </dependency>

然后就可以使用shiro框架提供的一些api实现权限控制的功能了,比如,下面的一个小案例,不连接数据库,使用shiro.ini文件中的模拟数据来简单的进行登录操作的权限认证。

package com.yinhai;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;

import javax.security.auth.login.AccountNotFoundException;

/**
 * 用于测试读取本地配置文件的认证测试
 */
public class AuthTest {
    public static void main(String[] args) {
        //1.创建securityManager用于管理认证操作
        DefaultSecurityManager securityManager = new DefaultSecurityManager();
        //创建一个realm并将其设置到创建的安全管理器中
        securityManager.setRealm(new IniRealm("classpath:shiro.ini"));
        //将安全管理器设置进SecurityUtils中
        SecurityUtils.setSecurityManager(securityManager);
        //得到当前要登录的主体
        Subject subject = SecurityUtils.getSubject();
        //创建当前登录的凭证
        UsernamePasswordToken admin = new UsernamePasswordToken("admin", "123456");
        try{
            //执行认证操作
            subject.login(admin);
            //判断是否认证成功
            boolean authenticated = subject.isAuthenticated();
            System.out.println(authenticated);
        }catch (Exception e){
            e.getMessage();
        }
    }
}

shiro.ini:

[users]
admin=123456
jack=111

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shiro基础 的相关文章

  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • Maven 中不同配置文件的不同 SCM

    在我的项目中 我们必须使用 maben build number 插件来构造 jar 的最终名称 为此我们使用 SCN 的修订版 因此我们需要 SCM 但是我们在无法直接访问的受控环境和本地测试环境上有两个 SVN 因此对于我们的 poup
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException
  • 将 Apache Camel 执行器指标发送到 Prometheus

    我正在尝试转发 添加 Actuator Camel 指标 actuator camelroutes 将交换 交易数量等指标 发送到 Prometheus Actuator 端点 有没有办法让我配置 Camel 将这些指标添加到 Promet
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio
  • Spring表单ModelAttribute字段验证避免400 Bad Request错误

    我有一个ArticleFormModel包含正常发送的数据html form由 Spring 使用注入 ModelAttribute注释 即 RequestMapping value edit method RequestMethod PO

随机推荐

  • OpenCV 4.0.0学习笔记 (一) 图像与视频的读写

    目录 读取图片 imread方法 图片读取出错处理 读取的图片属性 写入图片 imwrite方法 带透明度的png图像 读取视频 capture结构体 下一帧与释放 读取视频属性 get 方法 写入视频 VideoWriter类 显示窗口W
  • 使用THREE.js制作一款3D游戏

    使用THREE js制作一款3D游戏 本文是基于某位大神使用three js设计游戏的学习心得与知识分享 The Making of The Aviator Animating a Basic 3D Scene with Three js
  • ubuntu 安装微软雅黑和 Consolas 字体

    https www mycode net cn platform 741 html ubuntu 安装微软雅黑和 Consolas 字体 2条回复 Consolas 字体用来写代码真的是非常舒服 可惜 ubuntu 系统中默认并没有这个字体
  • Error:(15, 13) java: No property named “cType” exists in source parameter(s). Did you mean “CType”?

    实体 Data public class private String cType Mapping target type source cType 这问题是由于实体类的属性首字母小写第二个字母大写导致 source的值首字母改为大写就可以
  • 深圳杯数学建模2020c题_2020数学建模B题

    2020数学建模B题 本人咸鱼一条 参加过19年数学建模 当时在B题和C题之间选择 最后还是选择了C题 其实是B题不会写 看着去年九月参加比赛的教室 今年也坐着三人一组的建模小队 查资料 分析数据 编程 触景生情 我又老了一岁 心血来潮也看
  • NETCore入门系列(AOP之ActionFilter)

    文章目录 一 ActionFilter入门 使用场景 官方介绍 实操 二 Filter传参 TypeFilter ServiceFilter 三 Filter作用域 四 源码 一 ActionFilter入门 使用场景 一般用于Action
  • 文本转语音的接口(开放免费)

    百度的开放转换接口 http tts baidu com text2audio lan zh ie UTF 8 spd 4 text 你好啊 听起来好憨啊 lan 语言类型 lan en 英文 lan zh 中文 ie 文字编码方式 spd
  • 使用C++刷算法题的简明教程

    本篇博客参考自柳婼大神的 从放弃C语言到使用C 刷算法的简明教程 1 使用C 刷算法的好处 在具备C语言的前提下 学习C 并使用它刷算法题的学习成本非常低 只需要几个小时 C 向下兼容C C语言里的语法大部分都可以在C 文件中运行 所以学习
  • 个人知识体系思维导图_职场必备思维导图:提升能力、知识体系、决策思维、领导力......

    图片来源 图虫创意 让你快速成长的职场思维 思维导图 MBA智库文档 你需要具备哪些技能 1 你需要建立系统的思维方式和做事方法 2 你需要了解不管是口碑还是硬广渠道的推广效果 3 你需要有管理能力 很好的沟通能力 4 你需要具备总结分析的
  • js刷新当前页面的5种方式

    1 reload reload 方法 该方法强迫浏览器刷新当前页面 语法 location reload bForceGet 参数 bForceGet 可选参数 默认为 false 从客户端缓存里取当前页 true 则以 GET 方式 从服
  • 设计模式之状态模式

    一 背景 状态这个词汇我们并不陌生 在日常生活中 不同时间就有不同的状态 早上起来精神饱满 中午想睡觉 下午又渐渐恢复 晚上可能只想睡觉 这就对应着一天中不同的状态 二 定义 状态 State 模式的定义 对有状态的对象 把复杂的 判断逻辑
  • Rancher 2.2.2 - HA 部署高可用k8s集群

    对于生产环境 需以高可用的配置安装 Rancher 确保用户始终可以访问 Rancher Server 当安装在Kubernetes集群中时 Rancher将与集群的 etcd 集成 并利用Kubernetes 调度实现高可用 为确保高可用
  • 已知两点经纬度,计算两点间的距离

    通过两点的经纬度计算两点之间的距离 def getDistance lng1 lat1 lng2 lat2 param lng1 A点的经度 param lat1 A点的纬度 param lng2 B点的经度 param lat2 B点的纬
  • 房屋交接时需要注意些什么?

    在房屋交接时应该注意以下几点 一 进行水电煤气抄表 并计算金额 确定上下家各自承担的份额 上下家应在双方交接房屋时做好此项工作 以免交房后双方就这些小费用产生扯皮 二 办理有线电视的结算和更名手续 买卖双方在房屋买卖交易后一般不会忘了结算水
  • C++ 学习之旅(1)——编译器Compiler

    简单来说 由C 代码文件生成可执行文件的过程如下 mermaid svg GQamCVEXMVkYEemz font family trebuchet ms verdana arial sans serif font size 16px f
  • C语言字符串的经典例题

    1 统计单词的个数 include
  • 《编程珠玑》--读书笔记12章:取样问题

    第十二章 作者提出了一个问题 程序的输入包含两个整数m和n 其中m lt n 输出是0 n 1范围内的m个随机整数 不允许重复 有两种方法达到目的 1 思路 从r个剩余的整数中选出s个 以概率s r来选择下一个数 比如 m 2 n 5 选择
  • SaaS企业怎么做决策

    帆软会议室的墙上出现了 永不上市 利润分享 的字样 所有参观的SaaS创业者都被这八个字吸引 纷纷拿出手机拍照 帆软创始人薛宝表示 在帆软全国30多家办公室的墙上都贴着这8个大字 2006年 帆软用薛宝仅有的5000元积蓄创办了这家公司 从
  • linux进程及进程间同步通信机制

    进程 一 进程的存储器安排 这是 UNIX环境高级编程 中介绍的典型存储器安排 但现实也不一定非要如此 对于c c 来说 数据的存储方式还是认为3种 堆 栈 全局数据区 包括全局数据 静态数据 常量 二 僵尸进程和孤儿进程 进程在终止前向父
  • shiro基础

    shiro基础 shiro中有三大核心架构 subjects security manager realms 分别代表 使用shiro的主体 核心安全管理器和数据和安全管理的连接 使用shiro首先需要引入shiro需要的依赖 可以通过ma