shiro自定义logout filter

摘要:
--过滤器链定义从上到下执行,/**通常放在底部--˃/resources/**=anon/taglib/**=anon/logout=logout/login=anon˂!

虽然shiro有自己默认的logout过滤器,但是,有些时候,我们需要自己定义一下操作,比如说loutgout后,进入指定页面,或者logout后写入日志操作,这个时候,我们可以通过自定义logout filter来实现:

1,自定义一个systemLogout继承字logout filter,并重写preHandle方法

/**
 * @author:lyy
 * @Date: 2014/10/14 9:33
 * @version:
 * @Description:
 */
@Service
public class SystemLogout extends LogoutFilter{
    @Autowired
    LogManDataInf logManDataInfImpl;
    @Override
   @Override
    protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
        //在这里执行退出系统前需要清空的数据
     Subject subject = getSubject(request, response);
        String redirectUrl = getRedirectUrl(request, response, subject);
        try {
            subject.logout();
        } catch (SessionException ise) {
           ise.printStackTrace();
        }
//跳转到登录页面
        issueRedirect(request, response, redirectUrl);
     //返回false表示不执行后续的过滤器,直接返回跳转到登录页面
        return false;
    }
}

2,在配置自定义的filter进入filter chain中

<!-- 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">
        <map>
            <entry key="logout" value-ref="systemLogout" />
        </map>
    </property>
    <!-- 过虑器链定义,从上向下顺序执行,一般将/**放在最下边 -->
    <property name="filterChainDefinitions">
        <value>
            <!-- 对静态资源设置匿名访问 -->
            /resources/** = anon
            /taglib/** = anon
            <!-- 请求 logout地址,shiro去清除session-->
            /logout = logout
            /login = anon
            <!--/** = anon-->
            /** = authc
        </value>
    </property>
</bean>

免责声明:文章转载自《shiro自定义logout filter》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux系统下oracle表空间占用情况解决springboot序列化 json数据到前端中文乱码问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Shiro认证流程

认证流程图解: 身份认证流程 1、首先调用Subject.login(token) 进行登录,其会自动委托给SecurityManager 2、SecurityManager负责真正的身份验证逻辑;它会委托给Authenticator 进行身份验证; 3、Authenticator 才是真正的身份验证者,ShiroAPI 中核心的身份认证入口点,此处可...

java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯

1.模型管理    :web在线流程设计器、预览流程xml、导出xml、部署流程 2.流程管理    :导入导出流程资源文件、查看流程图、根据流程实例反射出流程模型、激活挂起 、自由跳转 3.运行中流程:查看流程信息、当前任务节点、当前流程图、作废暂停流程、指派待办人 4.历史的流程:查看流程信息、流程用时、流程状态、查看任务发起人信息 5.待办任务   ...

将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用

考虑系统password的安全,眼下大多数系统都不会把password以明文的形式存放到数据库中。 一把会採取下面几种方式对password进行处理 password的存储 “编码”存储 Shiro 提供了 base64和 16 进制字符串编码/解码的 API支持,方便一些编码解码操作。 Shiro内部的一些数据的存储/表示都使用了 base64和 16...

shiro细节、默认的过滤器、匹配模式和顺序

部分细节 [urls] 部分的配置,其格式是:“url=拦截器[参数],拦截器[参数]”; 如果当前请求的url匹配[urls] 部分的某个url模式,将会执行其配置的拦截器。 anon(anonymous)拦截器表示匿名访问(即不需要登录即可访问) authc(authentication)拦截器表示需要身份认证通过后才能访问 shiro中默认的过滤...

Shiro反序列化漏洞复现与实战

前言 之前做的一个项目,前段时间护网被别人打穿了。问了才知道,是通过Shrio的洞进内网的的。师兄说这个洞目前还处于值得关注的阶段,所以来复现一波。 仅供学习参考,请务必与文本核对后使用。否则,由此引起的一切后果均需自行负责,与作者无关。 漏洞复现 环境搭建 修改镜像源 修改镜像源,这样拉取镜像会快一点 1.编辑文件 vim /etc/docker/dae...

Shiro学习(10)Session管理

Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web的透明支持、SSO单点登录的支持等特性。即直接使用Shiro的会话管理可以直接替换如Web容器的会话管理。 会话 所谓会话,即用户访...