关于shiro学习总结
来源:互联网 发布:淘宝客户如何导入微信 编辑:程序博客网 时间:2024/06/06 07:14
最近学习了shiro来进行登录验证,以及权限管理.以下对shiro相关知识点进行学习与整理.
首先shiro是一个Java安全框架,它具有以下功能: 1:认证 2:加密 3:权限验证 4:会话管理
Shiro 的架构有 3 个主要的概念:Subject,SecurityManager 和 Realms。下面的关系图是关于这
些组件是如何交互的高级概述:
shiro几个关键的概念:
1.首先是SecurityManager:
SecurityManager是对管理Subject对象的对象,一般在配置web项目中,在springshiro.xml文件中配置好这个对象,之后一般不会与此对象打交道,仅仅是一个访问Subject对象的api.
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="myRealm"/> </bean>2.Subject(当前正在执行的用户的特定的安全视图):Subject一般表示当前登录的对象,可以在代码中很容易的取到Subject对象.
Subject subject = SecurityUtils.getSubject();
通过这一行代码,我们可以获取一个正在执行的Subject对象,它仅意味着"该事物目前正与软件交互.所有 Subject 实例都被绑定到(且这是必须的)一个 SecurityManager 上.当你正与一个 Subject 进行交互时,实质上是幕后的SecurityManager 处理所有繁重的 Subject 安全操作。这反映在上面的基本流程图。
3:Realm:Realms 担当 Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”,当它实际上与安全相
关的数据如用来执行身份验证(登录)及授权(访问控制)的用户帐户交互时,Shiro 从一个或多个为应用程
序配置的 Realm 中寻找许多这样的东西。
Realm 本质上是一个特定安全的 DAO:它封装了数据源的连接详细信息,使 Shiro 所需的相
关的数据可用。当配置 Shiro 时,你必须指定至少一个 Realm 用来进行身份验证和/或授权。SecurityManager
可能配置多个 Realms,但至少有一个是必须的。
使用shiro和spring进行集成,对web项目进行控制,以下为整合的主要细节:
一.spring-shiro.xml文件
二.同时需要在web.xml文件配置如下信息,(Shiro的filter必须放在其他filter之前,这句话实在网上查看到的,不过我之前是配置在其他的filter之后的,能够运行):<!--SecurityManager:Subject代表某一个用户,而SecurityManager就是对这些Subject进行管理的对象 在spring-shiro.xml文件中配置,一般不需要操作 自定义的realm必须继承AuthorizingRealm, 并实现两个Abstract方法doGetAuthorizationInfo和doGetAuthenticationInfo--><bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="myRealm"/>
</bean><!--密码验证bean--><bean id="passwordMatcher" class="com.zc.commons.security.CustomCredentialsMatcher"/><!--Realm的bean,将其credentialsMatcher属性执行passwordMatcher--><bean id="myRealm" class="com.zc.commons.security.MyRealm"> <property name="credentialsMatcher" ref="passwordMatcher"/></bean><!--配置shiroFilter的bean--><bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <!--shiro的核心安全接口,这个属性是必须的--> <property name="securityManager" ref="securityManager"/> <!--登录时的链接(可以根据项目中的url进行替换),非必须的操作,默认情况下会去寻找web工程根目录下的/login.jsp页面--> <property name="loginUrl" value="/login"/> <property name="filterChainDefinitions"> <value> /static/**=anon /login=anon /user/userinfo=anon </value> </property> </bean> <!--保证实现了shiro内部lifecycle函数的bean执行(管理生命周期)--> <bean id ="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/></beans>
<!--shiro权限过滤器--><filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <async-supported>true</async-supported> <init-param> <!--该值缺省的时候为false, 表示生命周期由SpringApplicationContext管理,设置为true则表示由ServletContainer管理--> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param></filter><filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>三.在springConfig.xml文件中import一下spring-shiro.xml文件
<import resource="spring-shiro.xml"/>四.在springMVC.xml文件中需要配置一下信息,用以开启shiro的权限管理的注解操作.
<!--开启切面编程自动代理--><aop:aspectj-autoproxy proxy-target-class="true"/><bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/></bean>以上对本次shiro学习做了一个简单的总结,主要目的在于巩固学习.有错勿喷!
阅读全文
0 0
- 关于shiro学习总结
- Shiro学习总结(一)--关于Shiro
- shiro学习过程总结
- Shiro学习(总结)
- Shiro学习(总结)
- Shiro-学习总结-认证
- Shiro 的学习总结
- shiro学习_总结
- shiro关于认证的学习
- 关于 shiro 学习第一天
- shiro整合spring学习,总结!
- shiro 框架的学习总结
- shiro学习总结(一)
- shiro学习总结(二)
- Shiro学习总结(10)——Spring集成Shiro
- Shiro学习总结(1)——Apache Shiro简介
- Shiro学习总结(二)--Shiro的入门小例子
- 关于Shiro的一些学习文章
- PaddlePaddle(v0.10.0)源码方式安装
- obb和android版本问题
- Struts2拦截器
- 洛谷 P1108 低价购买
- 文件操作的基本函数
- 关于shiro学习总结
- 现实的管理
- C语言基础---打印99乘法表
- 自己动手搭建React开发环境之二Babel
- android studio data/data空的以及文件无法导出的问题
- PHP常见函数
- #include
- 搭建私有CA和CA的操作
- #UVA1025#A Spy in the Metro(Dp经典)