HandlerInterceptor 实现登录
时间: 2023-10-08 21:09:42 浏览: 39
HandlerInterceptor 是 Spring MVC 框架中的一个拦截器,可以用于在处理请求之前或之后进行一些操作,例如实现登录验证、权限控制等。
下面是一个简单的登录验证的实现步骤:
1. 创建登录拦截器类 LoginInterceptor,继承 HandlerInterceptorAdapter 类,并重写 preHandle 方法,在该方法中实现登录验证逻辑。
```java
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
// 判断用户是否已经登录,如果已经登录,则放行
if (session.getAttribute("user") != null) {
return true;
}
// 用户未登录,跳转到登录页面
response.sendRedirect(request.getContextPath() + "/login");
return false;
}
}
```
2. 在 Spring MVC 的配置文件中注册 LoginInterceptor 拦截器。
```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/login"/>
<bean class="com.example.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
```
其中,`<mvc:mapping path="/**"/>` 表示拦截所有请求,`<mvc:exclude-mapping path="/login"/>` 表示排除登录请求,即不对登录请求进行拦截。
3. 在登录成功后将用户信息保存到 HttpSession 中。
```java
@RequestMapping("/login")
public String login(String username, String password, HttpSession session) {
// 验证用户名和密码
if (userService.login(username, password)) {
// 登录成功,将用户信息保存到 HttpSession 中
session.setAttribute("user", username);
return "redirect:/home";
}
// 登录失败,返回登录页面
return "login";
}
```
这样,当用户访问需要登录才能访问的资源时,如果用户未登录,则会被拦截器拦截并跳转到登录页面,登录成功后才能访问受保护的资源。