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递归模型关联与树状数据输出【方法】
如何在万网利用已有域名快速建站?
微信小程序 配置文件详细介绍

