写一个用interceptor拦截进行登录认证代码
时间: 2023-05-30 09:07:46 浏览: 48
以下是一个使用interceptor拦截进行登录认证的示例代码:
1. 创建一个Interceptor类,用于拦截请求并进行登录认证
```java
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Object user = session.getAttribute("user");
if (user == null) {
response.sendRedirect(request.getContextPath() + "/login");
return false;
}
return true;
}
// 省略postHandle和afterCompletion方法
}
```
2. 在Spring配置文件中定义Interceptor,并添加到拦截器链中
```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
```
3. 在Controller中定义登录方法和处理登录请求的方法
```java
@Controller
public class UserController {
@GetMapping("/login")
public String loginPage() {
return "login";
}
@PostMapping("/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
HttpSession session) {
if ("admin".equals(username) && "123456".equals(password)) {
session.setAttribute("user", username);
return "redirect:/home";
} else {
return "login";
}
}
@GetMapping("/home")
public String home() {
return "home";
}
}
```
在以上示例中,LoginInterceptor类用于拦截所有请求,并检查用户是否已登录。如果用户未登录,将重定向到登录页面。UserController中定义了登录方法和处理登录请求的方法。登录方法用于返回登录页面,处理登录请求的方法将检查用户名和密码是否正确,如果正确则将用户添加到session中,并重定向到主页。主页只有在用户已经登录的情况下才能访问。