Shiro的使用及原理(一)

Shiro登录的使用以及原理(一) 好久没写博客了,这段时间对最近项目做个总结,先从登入下手,话不多说直奔主题,Shiro的登录使用以及原理。 一、Shiro主要作用 shiro主要的作用就是实现用户登录(认证,授权,加密等),用户登录后的用户信息存储(缓存),用户登出等。 二、登录的使用 在使用登录的时候,最常见的一串代码就是获取Subject,然后对Token进行login(); // 得到subject然后对创建用户名/密码身份验证 Subject subject = SecurityUtils.ge... 阅读详情

Shiro的使用及原理(一)

加密算法使用MD5不可逆加密

public static void main(String[] args) {
        //MD5加密
        Md5Hash md5Hash = new Md5Hash("666", "123", 64);
        System.out.println(md5Hash);
    }

自定义Realm实现数据库查询认证

public class PasswordRealm extends AuthorizingRealm {

    public String getName() {
        return "passwordRealm";
    }
    //授权
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        return null;
    }
    //认证
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        //通过用户名查询数据库,进行认证
        //在token中拿到用户名
        String username = (String) authenticationToken.getPrincipal();
        //通过用户名查询数据库
        if (!"zhangsan".equals(username)) {
            return null;
        }
        //假设查询数据库
        String passsword = "664f16cf4ce56a454f348d3bfea194df";
        //info对象表示realm登录比对信息
        SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(username, passsword, ByteSource.Util.bytes("123"),getName());
        return info;
    }
}

编写测试代码测试登录

@Test
    public void testLogin() {
        //构建SecurityManager工程对象
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-realm.ini");
        //通过工厂对象创建出SecurityManager对象
        SecurityManager securityManager = factory.getInstance();
        //绑定securityManager到当前运行系统中,让系统随时使用
        SecurityUtils.setSecurityManager(securityManager);
        //创建当前登录的主体,拿到此时的主体
        Subject subject = SecurityUtils.getSubject();
        //绑定主体登录的身份/凭证
        UsernamePasswordToken token = new UsernamePasswordToken("zhangsan","666");
        //主体登录
        try {
            subject.login(token);
        } catch(Exception ex) {
            //登录异常
        }
        //判断登录成功
        System.out.println("验证登录成功与否" + subject.isAuthenticated());
        //登出
        subject.logout();
        System.out.println("验证登录成功与否" + subject.isAuthenticated());
    }
}

shiro在解密过程中帮我们做好了所有工作,我们只需要在配置文件中配置加密过程中使用的参数即可。同时希望提到shiro的subject,realm,securityManager这个3个核心,一切的操作api的底层都是由securityManager来实现的,所以都需要注入到securityManager中,相当于前端控制器

[main]
#定义凭证匹配器
credentialsMatcher=org.apache.shiro.credential.HashdeCredentialsMatcher
#散列算法
credentialsMatcher.hashAlgorithmName=md5
#将凭证匹配设置到realm
myRealm=shiro.PasswordRealm
myRealm.credentialsMatcher=$credentialsMatcher
securityManager.realms=$myRealm

shiro是一款比较流行的框架,为我们做了很多事情,提高功能的实现效率,在此提供基础的学习代码,后续还会有shiro和spring等的集成以及实际使用!!!!

Spring+SpringMVC+Mybatis+全文检索lucene+shiro实现的博客系统 使用 SSM(Spring、SpringMVC、MyBatis)框架,MVC 三层结构、Lucene全文检索引擎、Junit 4单元测试、logback日志框架、Druid数据库连接池、Shiro安全框架的一个博文系统; 立即下载

相关推荐

spingmvc集成shiro实现权限注解

spingmvc集成shiro实现权限注解,通过注解的方式实现权限管理

shiro源码分析(二)-- 注解实现原理

shiro的注解实现借助于aspectj框架,先通过一个例子熟悉下aspectj用法 一、小demo 先在pom.xml文件添加相关依赖 &lt;!--aspectj依赖--&gt; &lt;dependency&gt; &lt;groupId&gt;org.aspectj&lt;/groupId&gt; &lt;artifact...

seasonLai的博客 1619

uni-app项目中引入Vant UI组件库(完美避坑!!!)纯净版

uni-app项目中引入Vant UI组件库(纯净版--无uni-ui)

Wzmlzrr的博客 3万+

shiro权限管理基本原理和实现的整理

shiro权限管理基本原理和实现的整理 引言:这两天学习了一个对权限管理的新的框架shiro,在这里做一个总结,既为了帮助有需要的人,也方便自己以后来回顾。 本篇文章主要针对下面几个关键点来说明: 1. shiro简介 2. 集成spring,快速搭建环境 3. shiro认证(即登录,重点) 4. shiro授权(重点) 5. shiro会话管理(Session) 6. shiro缓存(reme...

StreamlineWq的博客 4277

【MediaPipe实战】从零构建实时人脸关键点检测与表情分析系统

本文详细介绍了如何使用MediaPipe框架从零构建实时人脸关键点检测与表情分析系统。通过Python代码实现,系统能够精准检测468个3D人脸关键点,并实时分析用户表情,适用于智能交互应用。文章包含环境配置、核心实现、可视化技巧及性能优化等实战内容,帮助开发者快速掌握深度学习在计算机视觉中的应用。

weixin_30836759的博客 72

Django Cookie/Session

Cookie是一种小型的文本文件,通常由Web服务器发送到用户浏览器,并存储在用户的本地计算机上。当用户再次访问该网站时,浏览器会将Cookie发送回服务器,从而实现用户身份验证、个性化设置等功能。Session是一种在服务器端存储用户会话信息的方式。与Cookie不同,Session数据存储在服务器上,而不是客户端。Django框架通过在客户端存储一个Session ID来实现Session的跟踪。Django框架的Cookie/Session机制为开发者提供了方便的数据存储和会话管理功能。

froginwe11的博客 467

shiro原理解析

(它的主要目的是与数据库打交道,查询数据库中的认证的信息(比如用户名和密码),查询授权的信息(比如权限的code等,所以这里可以理解为调用数据库查询一系列的信息,一般情况下在项目中采用自定义的realm,因为不同的业务需求不一样))这里的md5是原始的md5的加密了一次的密码+随机盐,然后对这个新的密码password=(md5+salt),进行散列:如何进行散列呢:就是多次md5加密md5(md5(md5(md5(password)))),这是4次散列,每次密码的破解的难度都加大。

m0_67403188的博客 2312

【Unity Shader】2D模型 3D模型混用的穿模问题(Spine在3D场景中出现前后穿模问题的解决办法)

问题描述: 在3D场景中使用Spine模型(2D), 因为Spine需要像Billboard类似的处理,永远是垂直与相机的, 所以一般情况下2D模型能正常显示且前后的阻挡关系也是没有问题的,如下图所示,一切都很美好.(这里用一个四边形,图中的福字表示2D模型) 可是如果后面蓝色的格子比较高,或者2D角色本身也比较高,那么就会出现模型穿插的问题,如下图所示: 如果吧2D模型竖立起来,前后关系肯定是没有问题的,所以也能避免模型穿插的问题,可是就没有Billboard效果,圆形的福字已经被压扁了,如下图:

Vitens的专栏 4590

spring boot 配置shiro及其原理

1、什么是shiro shiro是一个功能强大且易于使用的Java安全框架,它的认证,授权,加密和会话管理可以用于保护任何应用程序——来自从命令行应用程序、移动应用程序到最大的web和企业应用程序。 2、接入shiro认证过程 2.1、shiro登录认证 这个过程主要分为三个部分: 1:获取客户端输入放入用户名,密码。 2:获取数据源中存放的数据即相应的用户名,密码。 3:进行两者的比对,判断是...

lh87270202的博客 952

电源设计之路-Buck电源环路设计(Type IIIA&Type IIIB)

在对Buck 环路补偿Type II拓扑进行仿真测试后,对瞬态波形以及伯德图已经有感官上的认知;然后再进一步对Type IIIA & IIIB进一步的学习;进一步了解Cout电容量和ESR对环路补偿的影响;认识到一个电源,不是参考Datasheet上的参数进行选值就行;更需要根据实际情况,功率电感值、输出电容值以及不同电容会有不一样的ESR,这些都会对环路参数产生一定的影响

2503_92839756的博客 750

《Python入门到精通》函数详解

函数就是一段「封装」起来的「代码」,目的是提高代码的「模块性」和「复用性」。 2、函数的参数 2.1、变量的就近原则 2.2、传递参数 2.3、形参和实参 2.4、位置参数 2.5、缺省参数 2.6、可变类型和不可变类型 2.7、关键字参数 3、匿名函数 4、函数的返回值

wangyuxiang946的博客 1万+

权限管理框架之Shiro 的使用和原理(一)

Apache Shiro做用户权限管理非常流行的一款框架:下面先进入实战 1、引入jar: <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.5.0</version> </dependency> 2、一种登录的思路,核心实例代码: .

nandao158的博客 514

【OD统一考试(B卷)】比赛的冠亚季军,Python 解答

比赛的规则是 0 号和 1 号比赛,2 号和 3 号比赛,以此类推,每一轮,相邻的运动员进行比赛,获胜的进入下一轮,实力值大的获胜,实力值相等的情况,id 小的情况下获胜,轮空的直接进入下一轮。第一轮比赛,id 为 0 实力值为 2 的运动员和 id 为 1 实力值为 3 的运动员比赛, 1 号胜出进入下一轮争夺冠亚军,id 为 2 的运动员和 id 为 3 的运动员比赛,3 号胜出进入下一轮争夺冠亚军;2 号与 0 号,比赛进行季军的争夺,2 号实力值为 4,0 号实力值 2,故 2 号胜出,得季军。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

Shiro核心深度解析文档

Shiro的体系结构有3个主要概念Realm是可以访问特定于应用程序的安全数据(如用户、角色和权限)的组件, 它将应用程序的数据转换为 Shiro 可以理解的格式,因此 Shiro 可以反过来提供一个易于理解的主题编程 API。

JavaMyDream的博客 1387

打开 AI 投研新时代 —— 深度解析 GitHub 高星项目 daily_stock_analysis

GitHub热门开源项目"daily_stock_analysis"是一款AI驱动的智能股票分析工具,能自动抓取行情数据、分析新闻语义并生成结构化报告。该项目采用Python开发,通过GitHub Actions实现全自动运行,支持邮件、企业微信等多渠道推送。核心功能包括AI决策仪表盘、多数据源整合和零成本部署方案,特别适合需要自动化投研辅助的个人投资者。项目强调其仅为分析工具而非投资建议,提醒用户注意AI模型的潜在误差。该工具通过智能化处理重复工作,帮助投资者提升决策效率,成为量化投资

陈奕昆的博客 1522

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Shiro学习笔记

Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。Shiro 默认的登录认证是不带加密的,如果想要实现加密认证需要自定义登录认证,自定义 Realm。

qq_52166656的博客 455

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Shiro框架

Shiro框架

窗外有风景,笔下有前途,低头是题海,抬头是未来 293

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

shiro中获取当前user出错

原地址:https://blog.youkuaiyun.com/ITbasketplayer/article/details/70813844   准确场景描述应该是:  1、在应用层使用“线程池等会缓存线程的组件”,比如Executors.newFixedThreadPool(n);在线程里进行  getUser();  2、可能A用户获取到B用户。  下面分析一下原理:  顺着shiro源码去找,获取...

╃緣分天空╃ 3105

layers-apache.shiro

1.定义apache-shiro是java的一个安全框架2.核心SecurityManager3.获取当前与程序交互的实体 Subject subject = SecurityUtils.getSubject(); 获取session Session session = subject.getSession(); 设值 session.setAttribute(key,v

joker 222

Shiro原理讲解

从请求的开始,到Subject的创建、认证、授权、会话。本文讲述shiro对web请求的安全处理、SecurityManager的工作流程、shiro如何制作一个带有会话的角色。大致说明shiro的工作流程和讲解部分源码。

qq_42814833的博客 5454

Shiro(三) Shiro核心原理分析

Shiro(三) Shiro核心原理分析:认证、授权

这里是阿安的博客 4880

shiro使用流程及原理

1、核心介绍 1)Application Code用户编写代码 2)Subject就是shiro管理的用户 3)SecurityManager安全管理器,就是shiro权限控制核心对象,在编程时,只需要操作Subject方法,底层调用SecurityManager方法,无需直接编程操作SecurityManager 4)Realm应用程序和安全数据之间连接器,

loyli的博客 2132

shiro——SecurityManager、shiro架构原理

1. SecurityManager public interface SecurityManager extends Authenticator, Authorizer, SessionManager { Subject login(Subject var1, AuthenticationToken var2) throws AuthenticationException; ...

dgh112233的博客 2887

shiro笔记(一)shiro是什么,他的架构原理是什么,实现流程是什么

目录前提Shiro 简介Shiro官方解释核心功能Shiro 架构原理1第一行2Subject3Security Manager4Authenticator5Authorizer6Session Manager7Cache Manager8Session DAO9Realms解释以上的图shiro实现的流程 前提 Java代码+ rbac 的数据库思想 就可以实现不同角色,实现不同功能 Shiro 简介 目前市场上专门的Java权限框架有Apache Shiro 和 Spring Security。相较于

一天不写代码难受的博客 649

shiro原理

shiro原理

tiantian929的博客 4174

shiro漏洞原理以及检测key值原理

Shiro 1.2.4及之前的版本中,AES加密的密钥默认硬编码在代码里(SHIRO-550),Shiro 1.2.4以上版本官方移除了代码中的默认密钥,要求开发者自己设置,如果开发者没有设置,则默认动态生成,降低了固定密钥泄漏的风险。升级shiro版本并不能根本解决反序列化漏洞,代码复用会直接导致项目密钥泄漏,从而造成反序列化漏洞。针对公开的密钥集合,我们可以在github上搜索到并加以利用。

Thunderclap的博客 7922
上一篇: 集合之API使用大全(示例)NO.1
下一篇: json忽略空字段
烫手的砖
博客等级 码龄8年 7粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值