判断用户登录是用springmvc 拦截器还是filter
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断用户登录是用springmvc 拦截器还是filter相关的知识,希望对你有一定的参考价值。
最好使用spring拦截器。1、web.xml设置session有效时间 默认好像20min
2、登录成功后把登录信息放入session
3、定义拦截器 拦截请求 ,从session中获取登录信息 无则做响应跳转 如登录
123456public class XxxInterceptor extends HandlerInterceptorAdapter @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception //TODO
4、springxml中配置拦截器 的拦截url,如
12345678910 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <mvc:exclude-mapping path="/ajax/**"/> <mvc:exclude-mapping path="/login"/> <mvc:exclude-mapping path="/logout"/> <bean class="com.xx.xxx.XxxInterceptor" /> </mvc:interceptor> </mvc:interceptors>
差不多了 参考技术A 一般来说filter是比较合理的,一般的权限控制工具应该是filter 参考技术B 两者都可以
简单使用拦截器
拦截器
参考b站狂神视频
Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。
拦截器重写三个方法,详见参考,其与过滤器的区别参考 https://blog.csdn.net/zxd1435513775/article/details/80556034
为了解决 用户可以不登陆便可进入主页,这是不安全的,为了解决这个问题,便可使用拦截器。
一、新建登录拦截器
LoginHandlerIntercepter.java
package com.example.employee_management.config;
?
import org.springframework.web.servlet.HandlerInterceptor;
?
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
?
/**
* @className: LoginHandlerIntercepter
* @description: 登录拦截器
*/
public class LoginHandlerIntercepter implements HandlerInterceptor {
?
二、在MVC配置类中添加登录拦截器
MyMvcConfig.java
package com.example.employee_management.config;
?
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
?
/**
* @className: MyMvcConfig
* @description: MVC 控制器 借助注解完成控制器而不用手动编写
*/
三、修改登录控制器:添加session来保证拦截器正常运行
LoginController.java
package com.example.employee_management.controller;
?
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
?
import javax.servlet.http.HttpSession;
?
启动项目后,在浏览器中输入
localhost:8080/main.html
便会转入到首页(index.html),并且提示用户尚未登录。 登录拦截器的功能便已完成。
以上是关于判断用户登录是用springmvc 拦截器还是filter的主要内容,如果未能解决你的问题,请参考以下文章