标签:
shiro--安全框架,能够托管权限,但是权限需要自己实现。
下面是配置过程。
1.
1.1首先在web.xml中声明一个shiroFilter,在spring的项目中,可以通过spring提供的DelegatingFilterProxy当一个bean加载到spring容器中。当然了,看名字就知道这玩意是个委托代理。
1.2然后这个过滤器还需要跟spring MVC一样,设置一下需要加入安全策略拦截的url。具体的话,仿照mvc的路子,默认拦截所有的就行了,所以这里的url-pattern这里放入/*就行了。
example:
<!-- shiro 安全过滤器 -->
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<!--<async-supported>true</async-supported>-->
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
2.定义shiro的核心 shiroFilter
现在,需要在spring容器中,定义一下这个shiroFilter这个bean。当然了,这些复杂对象一般就是用工厂模式生产。这个bean中涉及到了:
securityManager:类似于MVC的dispatch,shiro的核心实现,定义了login,logout,creatSubject的接口。其中login的时候,会通过Authenticator认证,Authrizer授权。Map<String, Filter> filters:filter的容器,里面定义了所有在shiro里被注册过滤器。用来解释过滤器连中的过滤器。Map<String, String> filterChainDefinitionMap:filterChain的容器,里面定义了所有在shiro里被注册过的拦截器链。另外shiro框架中,先走Shiro 自己的 Filter 体系,然后才会委托给 Servlet 容器的 FilterChain 进行 Servlet 容器级别的Filter 链执行String loginUrl:登录默认跳转界面String successUrl :登录成功默认跳转界面String unauthorizedUrl:未经授权默认跳转页面example:<!-- Shiro的Web过滤器 --><bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="/login"/>
<property name="filters">
<util:map>
<entry key="authc" value-ref="formAuthenticationFilter"/>
<entry key="sysUser" value-ref="sysUserFilter"/>
</util:map>
</property>
<property name="filterChainDefinitions">
<value>
/login = authc
/logout = logout
/authenticated = authc
/** = user,sysUser
</value>
</property>
</bean><!--ps: filterChainDefinitions中,是成对出现的,前面是要拦截的地址,后面的是拦截器链,有先后顺序。其中authc是shiro自己提供的是否认证的拦截器,还有user、logout等,详细看下图—><!-- 安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealm"/>
<property name="sessionManager" ref="sessionManager"/>
<!--<property name="cacheManager" ref="cacheManager"/>-->
<property name="rememberMeManager" ref="rememberMeManager"/>
</bean>
3.配置securityManager,安全管理器:在上述配置中,涉及到了一个securityManager,类似于MVC的dispatch,shiro的核心实现,定义了login,logout,creatSubject的接口。其中login的时候,会通过Authenticator认证,Authrizer授权。
里面涉及到一下内容:
realm配置: 类似于shiro的安全数据源,下面会有详细介绍sessionManager配置:非必要,后面补cacheManager配置:非必要,后面补rememberMeManager配置:非必要,后面补example:<!-- 安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealm"/>
<property name="sessionManager" ref="sessionManager"/>
<!--<property name="cacheManager" ref="cacheManager"/>-->
<property name="rememberMeManager" ref="rememberMeManager"/>
</bean>
4.配置realm:Shiro从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager要验证用户身份, 那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法;也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作; 可以把 Realm 看成 DataSource , 即安全数据源。
里面涉及到以下内容:
credentialsMatchercachingEnabledauthenticationCachingEnabledauthenticationCacheNameauthorizationCachingEnabledauthorizationCacheName
标签:
原文地址:http://www.cnblogs.com/Tan1LenZ/p/5491939.html