01 shiro与spring集成
2017-06-15 13:18
225 查看
shiro与spring集成,本案例中没有配置缓存和单点登陆的实现。单点登陆需要导入shiro-cas-1.3.2.jar。Spring相关的JAR包这里不作列举。
shiro的JAR以及依赖包:
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
配置过滤器:
web.xml配置:
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
spring配置:
<bean id="shiroAuthenticationRealm" class="com.spec.shiro.ShiroAuthenticationRealm"></bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="shiroAuthenticationRealm"/>
</bean>
<!---->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="/"/>
<!--未授权-->
<property name="unauthorizedUrl" value="/index/goLogin.do"/>
<property name="filterChainDefinitions">
<value>
/plug/** = anon
/index.jsp = anon
/login.jsp = anon
/index/goLogin.do = anon
/index/login.do = anon
/** = authc
</value>
</property>
</bean>
代码说明:
1、ShiroAuthenticationRealm自己实现的Realm类,代码见下面的“Realm实现”
2、securityManager中的realm属性,配置为我们自己实现的Realm。
3、shiroFilter的名称必须和web.xml中的filter-name相同。 DelegatingFilterProxy作用是自动到Spring容器查找名字为shiroFilter(filter-name)的bean并把所有Filter的操作委托给它。如果名称不一致,会抛出NoSuchBeanDefinitionException异常。因为Shiro会来IOC容器中查找<filter-name>一样的bean。
4、shiroFilter中loginUrl为登录页面的地址。
5、shiroFilter中successUrl为登录成功页面的地址。
6、shiroFilter中unauthorizedUrl认证未通过访问页面。(未经过授权页面)
7、shiroFilter中filterChainDefinitions属性,anon表示匿名访问(不需要认证与授权),authc表示需要认证。
Realm实现:
ShiroAuthenticationRealm类:
public class ShiroAuthenticationRealm extends AuthorizingRealm {
/**
* 授权
* @param principalCollection
* @return
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return null;
}
/**
* 登陆信息和用户验证信息验证
* @param token
* @return
* @throws AuthenticationException
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
return null;
}
}
代码说明:
Realm实现:一般继承AuthorizingRealm(授权)即可,其继承了AuthenticatingRealm(即身份验证),而且也间接继承了CachingRealm(带有缓存实现)。
shiro的JAR以及依赖包:
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
配置过滤器:
web.xml配置:
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
spring配置:
<bean id="shiroAuthenticationRealm" class="com.spec.shiro.ShiroAuthenticationRealm"></bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="shiroAuthenticationRealm"/>
</bean>
<!---->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="/"/>
<!--未授权-->
<property name="unauthorizedUrl" value="/index/goLogin.do"/>
<property name="filterChainDefinitions">
<value>
/plug/** = anon
/index.jsp = anon
/login.jsp = anon
/index/goLogin.do = anon
/index/login.do = anon
/** = authc
</value>
</property>
</bean>
代码说明:
1、ShiroAuthenticationRealm自己实现的Realm类,代码见下面的“Realm实现”
2、securityManager中的realm属性,配置为我们自己实现的Realm。
3、shiroFilter的名称必须和web.xml中的filter-name相同。 DelegatingFilterProxy作用是自动到Spring容器查找名字为shiroFilter(filter-name)的bean并把所有Filter的操作委托给它。如果名称不一致,会抛出NoSuchBeanDefinitionException异常。因为Shiro会来IOC容器中查找<filter-name>一样的bean。
4、shiroFilter中loginUrl为登录页面的地址。
5、shiroFilter中successUrl为登录成功页面的地址。
6、shiroFilter中unauthorizedUrl认证未通过访问页面。(未经过授权页面)
7、shiroFilter中filterChainDefinitions属性,anon表示匿名访问(不需要认证与授权),authc表示需要认证。
Realm实现:
ShiroAuthenticationRealm类:
public class ShiroAuthenticationRealm extends AuthorizingRealm {
/**
* 授权
* @param principalCollection
* @return
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return null;
}
/**
* 登陆信息和用户验证信息验证
* @param token
* @return
* @throws AuthenticationException
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
return null;
}
}
代码说明:
Realm实现:一般继承AuthorizingRealm(授权)即可,其继承了AuthenticatingRealm(即身份验证),而且也间接继承了CachingRealm(带有缓存实现)。
相关文章推荐
- shiro 权限认证框集成到spring中,实现登陆与权限拦截
- spring 集成shiro 之 自定义过滤器
- Java 权限框架 Shiro 实战二:与spring集成、filter机制
- 单点登录cas与权限管理框架shiro集成-spring项目方式
- Apache Shiro 集成-spring
- 单点登录cas与权限管理框架shiro集成------spring项目方式
- Spring Boot 集成Shiro和CAS
- Spring中集成Shiro授权实例
- Shiro权限框架及与Spring集成
- Shiro集成Spring
- spring 集成shiro 之 自定义过滤器
- [原]CAS和Shiro在spring中集成
- CAS和Shiro在spring中集成+Hibernate缓存优化
- CAS和Shiro在spring中集成
- 第十二章Shiro 与Spring集成
- Apache Shiro 集成-spring
- spring boot 集成shiro的配置
- Shiro - 与Spring集成
- spring与shiro的集成
- spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制