shiro实现系统的退出功能

思路:

1.shiro有许多过滤器,其中就有一个LogoutFilter的过滤器,只需要继承并重写preHandle方法

2.在配置文件中注入自定义实现的过滤器,在此配置当退出的时候应重定向到某个页面

3.注入自定义filter,并且配置过滤器链

4.直接在页面中配置相应退出链接

1.自定义实现LogoutFilter

@Service 
public class SystemLogoutFilter extends LogoutFilter {
@Override
protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
//在这里执行退出系统前需要清空的数据
Subject subject=getSubject(request,response);
String redirectUrl=getRedirectUrl(request,response,subject);
ServletContext context= request.getServletContext();
try {
subject.logout();
context.removeAttribute("error");
}catch (SessionException e){
e.printStackTrace();
}
issueRedirect(request,response,redirectUrl);
return false;
}
}


2.配置要重定向的路径

   




第三步:

  











/resources/images/**=anon
/resources/style/**=anon
/resources/bootstrap/**=anon
/resources/fonts/**=anon
/resources/jquery/**=anon
/resources/layui/**=anon
/resources/js/**=anon
/favicon.ico=anon
/front/**=anon

/admin/**=authc

/logout=logout //这才是对退出的配置

/**=anon



4.:直接在页面相应的退出操作中配置链接:/logout 即可,并不需要实现controller层

你可能感兴趣的:(shiro)