SpringMVC配置拦截器实现登录控制的方法

发布时间 - 2026-01-11 00:24:40    点击率:

SpringMVC读取Cookie判断用户是否登录,对每一个action都要进行判断。之前使用jstl标签在页面上判断session如果没有登录就使用如下代码跳转到登录页面。

<c:if test="${sessionScope.login == null || sessionScope.login == false}">
 <!-- 未登录 -->
 <c:redirect url="/login"/>
</c:if>
<c:if test="${sessionScope.login}">
 <!-- 已登录 -->
</c:if>

但是测试发现如果session过期,页面渲染就会无故中断并且不会跳转到登录页面。故尝试使用拦截器来进行登录判断。

拦截器配置文件如下

<!-- <mvc:mapping path="/**" /> 如果只写一个*,则不能拦截类似/*/*的请求。静态资源的请求需要判断不进行拦截 -->
<mvc:interceptors>
 <mvc:interceptor>
  <mvc:mapping path="/**" />
  <bean class="com.ts.settle.tools.interceptor.LoginInterceptor">
   <property name="excludedUrls">
    <list>
     <value>/login</value>
     <value>/static/</value>
    </list>
   </property>
  </bean>
 </mvc:interceptor>
</mvc:interceptors>

拦截器实现类如下

public class LoginInterceptor implements HandlerInterceptor {
 private AvatarLogger logger = AvatarLoggerFactory.getLogger(this.getClass());

 private List<String> excludedUrls;

 /**
  * 在DispatcherServlet完全处理完请求后被调用
  * 当拦截器抛出异常时,依然会从当前拦截器往回执行所的拦截器的afterCompletion()
  */
 public void afterCompletion(HttpServletRequest request,
        HttpServletResponse response, Object handler, Exception exception)
   throws Exception {

 }

 //在业务处理器处理请求执行完成后,生成视图之前执行的动作
 public void postHandle(HttpServletRequest request, HttpServletResponse response,
       Object handler, ModelAndView modelAndView) throws Exception {

 }

 /**
  * 在业务处理器处理请求之前被调用
  * 如果返回false 则退出本拦截器,本拦截器后面的postHandle与afterCompletion不再执行
  */
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
        Object handler) throws Exception {

  String requestUri = request.getRequestURI();
  for (String url : excludedUrls) {
   if (requestUri.contains(url)) {
    return true;
   }
  }

  HttpSession session = request.getSession();
  Boolean login = (Boolean) session.getAttribute("login");
  if (login == null || !login) {
   //System.out.println(request.getContextPath());
   logger.info("Pedirect to login page");
   response.sendRedirect(request.getContextPath() + "/login");
  }
  return true;
 }

 public void setExcludedUrls(List<String> excludedUrls) {
  this.excludedUrls = excludedUrls;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# springmvc登录拦截  # springmvc实现登录  # springmvc  # 登录拦截器  # SpringMVC自定义拦截器登录检测功能的实现代码  # SpringMVC 如何使用注解完成登录拦截  # springmvc拦截器登录验证示例  # SpringMVC拦截器——实现登录验证拦截器的示例代码  # SpringMVC拦截器实现登录认证  # 基于SpringMVC实现网页登录拦截  # 拦截器  # 跳转到  # 就会  # 都要  # 如果没有  # 抛出  # 配置文件  # 大家多多  # 只写  # 完成后  # bean  # interceptor  # ts 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  移动端脚本框架Hammer.js  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在阿里云域名上完成建站全流程?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  如何快速搭建二级域名独立网站?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  phpredis提高消息队列的实时性方法(推荐)  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  网站制作价目表怎么做,珍爱网婚介费用多少?  Laravel如何实现多对多模型关联?(Eloquent教程)  如何在阿里云ECS服务器部署织梦CMS网站?  如何在建站之星网店版论坛获取技术支持?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  如何撰写建站申请书?关键要点有哪些?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  电商网站制作价格怎么算,网上拍卖流程以及规则?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  php 三元运算符实例详细介绍  教学论文网站制作软件有哪些,写论文用什么软件 ?  Android okhttputils现在进度显示实例代码  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  Laravel如何使用Gate和Policy进行授权?(权限控制)  Laravel怎么在Controller之外的地方验证数据  php结合redis实现高并发下的抢购、秒杀功能的实例  如何在香港服务器上快速搭建免备案网站?  bootstrap日历插件datetimepicker使用方法  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何确认建站备案号应放置的具体位置?  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  jQuery validate插件功能与用法详解  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  EditPlus中的正则表达式 实战(4)  高端云建站费用究竟需要多少预算?  ,南京靠谱的征婚网站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何在万网利用已有域名快速建站?  微信小程序 配置文件详细介绍