生成一个springboot登录代码 要求实现用户名和密码校验,并且用拦截器拦截不正确的请求,
时间: 2023-05-30 18:08:04 浏览: 101
以下是一个示例的Spring Boot登录代码,其中实现了用户名和密码的校验,并使用拦截器拦截不正确的请求:
1. 首先,在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. 创建一个名为`UserController`的控制器,用于处理登录请求和返回登录页面:
```java
@RestController
public class UserController {
@GetMapping("/")
public String index() {
return "Welcome to the login page!";
}
@GetMapping("/login")
public String login() {
return "Please enter your username and password.";
}
@PostMapping("/login")
public String doLogin(HttpServletRequest request, String username, String password) {
// 校验用户名和密码是否正确
if ("admin".equals(username) && "123456".equals(password)) {
// 登录成功,将用户信息保存到Session中
request.getSession().setAttribute("user", username);
return "Login successful!";
} else {
// 登录失败,返回错误信息
return "Username or password is incorrect!";
}
}
}
```
3. 创建一个名为`LoginInterceptor`的拦截器,用于拦截不正确的请求:
```java
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 检查用户是否已经登录,如果未登录则跳转到登录页面
if (request.getSession().getAttribute("user") == null) {
response.sendRedirect("/login");
return false;
}
return true;
}
}
```
4. 在`Application`类中添加以下配置,以启用Spring Security和拦截器:
```java
@SpringBootApplication
public class Application extends WebSecurityConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// 禁用CSRF防护和HTTP Basic认证
http.csrf().disable().httpBasic().disable()
// 配置登录页面和登录请求的URL
.formLogin().loginPage("/login").usernameParameter("username").passwordParameter("password").loginProcessingUrl("/login")
// 配置拦截器
.and().addFilterBefore(new LoginInterceptor(), BasicAuthenticationFilter.class)
// 配置允许访问的页面
.authorizeRequests().antMatchers("/login", "/").permitAll().anyRequest().authenticated();
}
}
```
5. 运行应用程序,并访问http://localhost:8080/,应该会看到“Welcome to the login page!”的消息。点击“Please enter your username and password.”链接进入登录页面,输入正确的用户名和密码,应该会看到“Login successful!”的消息。如果输入错误的用户名或密码,则会看到“Username or password is incorrect!”的消息。如果访问受保护的页面而未登录,则应该会被重定向到登录页面。