spring中 shiro logout 配置方式

原创 2016年08月29日 19:03:49
spring中 shiro logout 配置方式有两种方式实现logout
1. 普通的action中 实现自己的logout方法,取到Subject,然后logout
 @RequestMapping(value = "${adminPath}/logout", method = RequestMethod.GET)
	public String logout(HttpServletRequest request, HttpServletResponse response, Model model) throws IOException {
		Principal principal = UserUtils.getPrincipal();
		// 如果已经登录,则跳转到管理首页
		if(principal != null){
			UserUtils.getSubject().logout();
		}
		return "redirect:" + adminPath+"/login";
	}


这种需要在ShiroFilterFactoryBean 中配置 filterChainDefinitions
对应的action的url为anon
<bean name="shiroFilterChainDefinitions" class="java.lang.String">
		<constructor-arg>
			<value>
				/static/** = anon
				/userfiles/** = anon
				${adminPath}/cas = cas
				${adminPath}/login = authc
				${adminPath}/logout = anno
				${adminPath}/** = user
				/act/rest/service/editor/** = perms[act:model:edit]
				/act/rest/service/model/** = perms[act:model:edit]
				/act/rest/service/** = user
				/ReportServer/** = user
			</value>
		</constructor-arg>
	</bean>


2. 使用shiro提供的logout filter 需要定义 相应的bean
<<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
		<property name="securityManager" ref="securityManager" /><!-- 
		<property name="loginUrl" value="${cas.server.url}?service=${cas.project.url}${adminPath}/cas" /> -->
		<property name="loginUrl" value="${adminPath}/login" />
		<property name="successUrl" value="${adminPath}?login" />
		<property name="filters">
            <map>
                <entry key="cas" value-ref="casFilter"/>
                <entry key="authc" value-ref="formAuthenticationFilter"/>
				<entry key="logout" value-ref="logoutFilter" />
            </map>
        </property>
		<property name="filterChainDefinitions">
			<ref bean="shiroFilterChainDefinitions"/>
		</property>
	</bean>



对应在 shiroFilterChainDefinitions中将对应的url改为logout
     <bean name="shiroFilterChainDefinitions" class="java.lang.String">
		<constructor-arg>
			<value>
				/static/** = anon
				/userfiles/** = anon
				${adminPath}/cas = cas
				${adminPath}/login = authc
				${adminPath}/logout = logout
				${adminPath}/** = user
				/act/rest/service/editor/** = perms[act:model:edit]
				/act/rest/service/model/** = perms[act:model:edit]
				/act/rest/service/** = user
				/ReportServer/** = user
			</value>
		</constructor-arg>
	</bean>
并配置loginFilterbean
<bean id="logoutFilter" class="org.apache.shiro.web.filter.authc.LogoutFilter">
   <property name="redirectUrl" value="${adminPath}/login" />
</bean>


shiro实现系统的退出功能

思路: 1.shiro有许多过滤器,其中就有一个LogoutFilter的过滤器,只需要继承并重写preHandle方法 2.在配置文件中注入自定义实现的过滤器,在此配置当退出的时候应重定向到某个...

shiro应用,注销掉后让系统跳转到后台登陆页

shiro应用,后台注销掉后让系统跳转到后台登陆页 在进行shop++源码开发中遇到问题及解决,给大家分享下: 默认情况是跳转到网站首页,但现在需要后台登陆注销后,跳转到后台登陆界面修改如下: 1、...

Apache Shiro 退出

退出操作可以通过调用subject.logout()来释放你的登录信息,如: currentUser.logout(); //removes all identifying inf...

我的shiro之旅: 十三 shiro 用户的登录与退出

shiro的登录与退出非常简单,在这里简单给出代码,更详细可以参考官网。 (1) 用户的登录 public void login(User user, HttpServletRequest req...
  • LHacker
  • LHacker
  • 2014年03月04日 10:23
  • 11675

spring中 shiro logout 配置方式

有两种方式实现logout 1. 普通的action中 实现自己的logout方法,取到Subject,然后logout 这种需要在ShiroFilterFactoryBean 中配置 filte...

springmvc + shiro 登录登出

@Controller @RequestMapping(value = "/roll") public class RollLoginController { @RequestMappin...
  • michnus
  • michnus
  • 2012年09月10日 10:59
  • 7475

shiro 自定义logout路径

分享一个shiro 自定义 logout 路径的方法。(亲测可用) shiro默认logout路径是主页,可是实际开发中并不想这样。尝试了网上的两种方法都失败了。在无数的疼苦挣扎中找到了一种适合自己的...

如何使用Shiro实现不同用户登录成功后跳转到不同主页?

0 如何使用Shiro实现不同用户登录成功后跳转到不同主页?10 Shiro配置文件中successUrl指定的页面只有一个:  Java代码   "shi...

shiro退出登陆清空缓存实现

上一篇介绍了使用springmvc集成shiro登陆过程(http://www.cnblogs.com/nosqlcoco/p/5579081.html),通过FormAuthenticationFi...

Shiro 之 Filter(上):ShiroFilter

在上一篇中,我们分析了 Shiro Web 应用的入口 —— EnvironmentLoaderListener,它是一个 ServletContextListener,在 Web 容器启动的时候,它...
  • wangshfa
  • wangshfa
  • 2014年10月21日 14:07
  • 23322
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring中 shiro logout 配置方式
举报原因:
原因补充:

(最多只允许输入30个字)