帮我写一个Spring Boot cookie与session登陆界面
时间: 2023-05-22 18:04:53 浏览: 139
spring boot + 漂亮的登陆界面
5星 · 资源好评率100%
好的,以下是一个简单的Spring Boot cookie与session登陆界面的代码示例。
首先是UserController.java:
```
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/")
public String index(Model model) {
return "index";
}
@PostMapping("/login")
public String login(@RequestParam String username,
@RequestParam String password,
HttpServletResponse response,
HttpServletRequest request) {
User user = userService.getUser(username, password);
if(user != null) {
HttpSession session = request.getSession(true);
session.setAttribute("user", user.getUsername());
Cookie cookie = new Cookie("user", user.getUsername());
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
return "redirect:/dashboard";
}
else {
return "index";
}
}
@GetMapping("/dashboard")
public String dashboard(Model model, HttpServletRequest request) {
HttpSession session = request.getSession(false);
if(session == null) {
return "index";
}
else {
String username = (String) session.getAttribute("user");
if(username == null) {
return "index";
}
else {
model.addAttribute("username", username);
return "dashboard";
}
}
}
@GetMapping("/logout")
public String logout(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession(false);
if(session != null) {
session.removeAttribute("user");
session.invalidate();
}
Cookie cookie = new Cookie("user", null);
cookie.setMaxAge(0);
response.addCookie(cookie);
return "index";
}
}
```
这个类处理了登陆、认证和登出逻辑,使用了HttpSession和Cookie来存储用户状态。具体而言,当用户登陆时,UserController会调用UserService来验证用户名和密码,如果验证通过,UserController会创建一个新的HttpSession并将用户信息存储在其中,同时会创建一个新的Cookie来存储用户信息,并将Cookie添加到HttpServletResponse中。当用户访问dashboard页面时,UserController会先检查是否存在有效的HttpSession,如果存在,则从中获取用户信息并将其传递给Model。当用户登出时,UserController会将HttpSession和Cookie失效,并将用户重定向到登陆页面。
接下来是UserService.java:
```
@Service
public class UserService {
private static final List<User> users = Arrays.asList(
new User("admin", "admin"),
new User("user", "password"),
new User("test", "test")
);
public User getUser(String username, String password) {
for(User user : users) {
if(user.getUsername().equals(username) && user.getPassword().equals(password)) {
return user;
}
}
return null;
}
}
```
这个类模拟了一个简单的用户管理系统,只有三个用户(admin,user和test),每个用户都有一个用户名和密码。UserService类提供了一个getUser方法,用于验证用户名和密码是否正确。实际情况下,这个方法会调用数据库或者其它身份认证服务来获取正确的用户信息。
最后是View层:
index.html
```
<!DOCTYPE html>
<html>
<head>
<title>Spring Boot Cookie and Session Login Example</title>
</head>
<body>
<h1>Spring Boot Cookie and Session Login Example</h1>
<form method="post" action="/login">
<label>Username:</label>
<input type="text" name="username"></input>
<br/>
<label>Password:</label>
<input type="password" name="password"></input>
<br/>
<input type="submit" value="Login"></input>
</form>
</body>
</html>
```
dashboard.html:
```
<!DOCTYPE html>
<html>
<head>
<title>Dashboard - Spring Boot Cookie and Session Login Example</title>
</head>
<body>
<h1>Welcome, ${username}!</h1>
<a href="/logout">Logout</a>
</body>
</html>
```
这个例子中的View层非常简单,只包含了一个登陆表单和一个dashboard页面。当用户成功登陆后,会重定向到dashboard页面并显示用户信息。当用户登出时,会返回到登陆页面。
注意:以上代码是一个简单的示例,实际使用时还需要加入错误处理、安全认证等功能来提高系统的鲁棒性。
阅读全文