权限控制框架---shiro入门
1、shiro控制权限的两种思想:粗粒度url级别,细粒度方法级别
2、shiro执行流程简介

3、案例
3.1shiro控制用户登录实现,登录其实就是shiro中的认证。
(1)配置web.xml(shiro的filterFactory会去spring中找shiroFilter),配置spring分配置文件applicationContext-shiro.xml(shiroFilter,securityManager),在spring主配置文件中引入分配置文件。
(2)action中获取subject对象,创建认证token对象,调用subject.login(token),shiro底层会调用securityManger。
(3)编写Realm实现类,可以根据需要选择是实现Realm接口或继承某个实现类如AuthorizingRealm,实现某些方法如认证和授权的方法(登录只需要编写认证的代码,将授权空实现即可)
(4)调用业务层查询user,token中就可以获取到username,下面这句代码比较关键,shiro中的securityManger是查询出的用户密码直接比较的。当密码不一致就会抛出异常,所以在action中的subject.login代码处捕获异常即可,无异常就表示认证成功,登录成功,可以跳转主页;有异常就表示认证失败,可以直接让返回登录页面即可。
return new SimpleAuthenticationInfo(user, user.getPassword(), getName());
3.2授权功能实现待续。。。
权限控制框架---shiro入门的更多相关文章
- 了解权限控制框架shiro 之实际应用.
Apache Shiro 1.权限控制分为 a.粗粒度 URL 级别权限控制 b.细粒度方法级别权限控制 2.使用shiro进行权限控制主要有四种主要方式 : a. 在程序中 通过 Subje ...
- 权限控制框架Shiro简单介绍及配置实例
Shiro是什么 http://shiro.apache.org/ Apache Shiro是一个非常易用的Java安全框架,它能提供验证.授权.加密和Session控制.Shiro非常轻量级,而且A ...
- 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权
原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...
- Flex-Security权限控制框架
转自:http://code.google.com/p/flex-security/ flex UI组件权限控制框架 一.快速开始 1) 下载并添加flex_security.swf在你的flex l ...
- Java安全(权限)框架 - Shiro 功能讲解 架构分析
Java安全(权限)框架 - Shiro 功能讲解 架构分析 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 简述Shiro Shiro出自公司Apache(阿帕奇),是java的一 ...
- WPF权限控制框架——【4】抛砖引玉
写第一篇"权限控制框架"系列博客是在2021-01-29,在这不到一个月的时间里,收集自己零碎的时间,竟然写出了一个"麻雀虽小,五脏俱全"的权限控制框架:对于一 ...
- 权限控制框架Spring Security 和Shiro 的总结
关于权限控制,一开始感觉比较难,后来先是接触了Spring Security 学起来也比较吃力,再是学习了Shiro,感觉简单很多. 总体来说这些框架,主要做了两个事情 Authentication: ...
- 安全框架Shiro入门
Shiro简介 Apache Shiro是Java的一个安全框架,官网为shiro.apache.org,主要场景为控制登陆,判断用户是否有访问某个功能的权限等等. Shiro的核心功能(入门知识,只 ...
- JAVAEE——BOS物流项目11:在realm中授权、shiro的方法注解权限控制、shiro的标签权限控制、总结shiro的权限控制方式、权限管理
1 学习计划 1.在realm中进行授权 2.使用shiro的方法注解方式权限控制 n 在spring文件中配置开启shiro注解支持 n 在Action方法上使用注解 3.★使用shiro的标签进行 ...
随机推荐
- python 2
1. 格式化输出 %s 可以代替str %d 可以代替int %f 可以代替浮点数( float ) 格式: Name = input('你的名字:') Age = int(input('你的年龄: ...
- django的静态文件的引入
django的静态文件的引入 1.路径配置 在templates文件夹的同级目录下新建static文件夹 在setting里面写上STATICFILES_DIRS = [os.path.join(BA ...
- Deploy Descriptor
之前我们在编写HelloWorld项目时,在WEB-INF目录下创建了一个web.xml文件.这个文件叫做部署描述文件,每个Servlet应用程序的部署描述文件的名称都是web.xml.Web容器在启 ...
- rabbitmq management advance lesson
rabbitmq management advance management install rabbitmq-plugins enable rabbitmq_management visit : h ...
- 移动Web端资源整合
meta篇 viewreport 视窗宽度 <meta name="viewport" content="width=device-width,initial-sc ...
- Ubuntu 下解压tar.xz方法
参考地址:https://www.cnblogs.com/baby123/p/6611169.html
- myibatis的坑--text类型的字段查询缺失
问题:某个字段的类型为text(或者mediumtext,longtext)的时候,用selectByQuery语句查询出来的结果不包含该字段内容. myibatis 用mybatis-generat ...
- npm cnpm
npm 1.说明: npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等) 2.使用npm安装插件:命令提示符执行npm ins ...
- python虚拟环境virtualenv简介
参考网站: https://realpython.com/python-virtual-environments-a-primer/ 一. 创建一个新的虚拟环境 # Python 2: $ virtu ...
- JavaScript中的匿名函数遇上!会怎么样
通常,我们声明一个函数test){},可以通过test()来调用这个函数.但是,如果我们在这个函数声明的末尾加上(),解析器是无法理解的. function test(){ console.log(' ...