springMVC集成shiro权限认证框架,登录之后退出登录出现登录不上的问题

有两种解决方式:

1.在web.xml文件配置一段欢迎页面:

<welcome-file-list>
    <welcome-file>/index.do</welcome-file>
 </welcome-file-list>

2.在自定义表单过滤器MyFormAuthenticationFilter里,添加清除shiro 在sesion存储的上一次访问地址 shiroSavedReques

 1 package cn.zj.logistic.shiro;
 2
 3 import javax.servlet.ServletRequest;
 4 import javax.servlet.ServletResponse;
 5 import javax.servlet.http.HttpServletRequest;
 6
 7 import org.apache.commons.lang3.StringUtils;
 8 import org.apache.shiro.authc.AuthenticationToken;
 9 import org.apache.shiro.session.Session;
10 import org.apache.shiro.subject.Subject;
11 import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
12 import org.apache.shiro.web.util.WebUtils;
13
14 public class MyFormAuthenticationFilter extends FormAuthenticationFilter {
15
16     @Override
17     protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
18
19         HttpServletRequest req = (HttpServletRequest) request;
20
21         // 1.获取前台表单提交的验证码
22         String verifyCode = req.getParameter("verifyCode");
23
24
25
26         String rand = (String) req.getSession().getAttribute("rand");
27
28         System.out.println("rand :" + rand);
29
30         if (StringUtils.isNotBlank(verifyCode)) {
31             if (!verifyCode.equals(rand.toLowerCase())) {
32                 // 共享一个错误信息到 shiroLoginFailure
33                 request.setAttribute("shiroLoginFailure", "verifyCodeError");
34
35                 // 返回true,shiro就不再进行下一操作(数据库认证)了,直接返回了
36                 return true;
37             }
38         }
39
40         return super.onAccessDenied(request, response);
41     }
42
43     @Override
44     protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request,
45             ServletResponse response) throws Exception {
46
47
48         // 1.获取sesssion
49         Session session = subject.getSession(false);
50         if (session != null) {
51             // 清除shiro共享的上一次地址 ://shiroSavedRequest
52             session.removeAttribute(WebUtils.SAVED_REQUEST_KEY);
53         }
54
55         return super.onLoginSuccess(token, subject, request, response);
56     }
57
58 }

原文地址:https://www.cnblogs.com/abcdjava/p/11241457.html

时间: 2024-07-30 02:11:15

springMVC集成shiro权限认证框架,登录之后退出登录出现登录不上的问题的相关文章

Shiro权限控制框架入门1:Shiro的认证流程以及基本概念介绍

前言:我在最开始学习Shiro这个框架时,在网上搜索到的一个介绍比较全面的教程是:<跟我学Shiro>系列教程.但是在我看了他写的前几篇文章后,我发现虽然他在这个系列教程中把shiro的一些特性介绍地非常全面详细,但是整个教程的叙述方式还是有很大缺陷的.文章与文章之间并没有很好地串联起来,每篇文章介绍的东西都过于分散了,如果是对shiro完全不了解的新手来看的话完全是一场噩梦.就像一个网友评价的这样: 看了看这个教程,看完之后都想放弃shiro了,完全看不懂,后来百度了很多别的资料才理解了sh

Springmvc集成Shiro实现权限管理

Shiro是一个安全框架,他可以集成其他开发开发框架 如:Springmvc,实现用户身份认证.权限管理等等功能,shiro详细的介绍也就不讲了,这里给出一些关键的知识点吧: 知识点: shiro中默认的过滤器 过滤器名称 过滤器类 描述 anon org.apache.shiro.web.filter.authc.AnonymousFilter 匿名过滤器 authc org.apache.shiro.web.filter.authc.FormAuthenticationFilter 如果继续

Shiro权限认证

   一.权限认证核心要素 权限认证顾名思义,就是在应用系统中,控制谁能访问哪些资源.核心要素有仨:权限.角色.用户 权限:即操作资源的权利,如访问某个url,对某个模块数据进行增删改查 角色:权限的集合,一种角色可以包含多种权限.例如操作员角色可查看系统账单.进行结账操作多种权限. 用户:也就是身份认证中提到的subject一角. 二.授权 shiro授权的方式通常有三种: 1.编程式授权:在代码中进行授权操作,可基于角色和权限两种方式. 2.注解式授权:使用注解对方法或类进行授权,标注该类可

类Shiro权限校验框架的设计和实现(2)--对复杂权限表达式的支持

前言: 我看了下shiro好像默认不支持复杂表达式的权限校验, 它需要开发者自己去做些功能扩展的工作. 针对这个问题, 同时也会为了弥补上一篇文章提到的支持复杂表示需求, 特地尝试写一下解决方法. 本文主要借助groovy脚本来实现复杂表达式的计算, 其思想是借鉴了Oval支持复杂表达式(groovy/javascript/ruby)的实现方式. 文章系列: 1. springmvc简单集成shiro  2. 类Shiro权限校验框架的设计和实现  3. 权限系统(RBAC)的数据模型设计 目标

SpringMVC整合Shiro权限框架

尊重原创:http://blog.csdn.net/donggua3694857/article/details/52157313 最近在学习Shiro,首先非常感谢开涛大神的<跟我学Shiro>系列,在我学习的过程中发挥了很大的指导作用.学习一个新的东西首先就是做一个demo,多看不如多敲,只有在实践中才能发现自己的欠缺,下面记录下来我整合shiro的过程.如果有不足之处,还望各位看官多多指出. 一.基本名词解释 Apache Shiro是一个强大易用的Java安全框架.它可以帮助我们完成:

在前后端分离的SpringBoot项目中集成Shiro权限框架

项目背景 公司在几年前就采用了前后端分离的开发模式,前端所有请求都使用ajax.这样的项目结构在与CAS单点登录等权限管理框架集成时遇到了很多问题,使得权限部分的代码冗长丑陋,CAS的各种重定向也使得用户体验很差,在前端使用vue-router管理页面跳转时,问题更加尖锐.于是我就在寻找一个解决方案,这个方案应该对代码的侵入较少,开发速度快,实现优雅.最近无意中看到springboot与shiro框架集成的文章,在了解了springboot以及shiro的发展状况,并学习了使用方法后,开始在网上

springmvc集成shiro登录失败处理

一般的登录流程会有:用户名不存在,密码错误,验证码错误等.. 在集成shiro后,应用程序的外部访问权限以及访问控制交给了shiro来管理. shiro提供了两个主要功能:认证(Authentication)和授权(Authorization);认证的作用是证明自身可以访问,一般是用户名加密码,授权的作用是谁可以访问哪些资源,通过开发者自己的用户角色权限系统来控制. shiro的会话管理和缓存管理不在本文范围内. 下面通过登录失败的处理流程来介绍springmvc与shiro的集成. 项目依赖:

springmvc集成shiro注解权限

源代码下载:http://download.csdn.net/detail/u013147600/9066923 java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Around错误解决方法:http://blog.csdn.net/u013147600/article/details/48132947 配置aop错误: org.springframework.beans.factory.xml.XmlBeanDefinit

SpringMVC + Mybatis + Shiro 权限整合【转】

<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"/> , 否则controller无法使用注解. 这个方法可能避免使用sessionValidationScheduler, 就是避免使用, 就能使用高版本的quartz了. 配置会话监听: Java代码   package com.pandy.core.security.session;