4.21
已经花费的时间6天,还剩余的时间4天
package com.example.training.entity;
import javax.persistence.*;
@Entity
@Table(name = "user")
public class User {
// 内部枚举定义
public enum Role {
ADMIN, EMPLOYEE
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(unique = true)
private String name;
private String password;
@Enumerated(EnumType.STRING)
private Role role;
// 构造方法
public User() {}
public User(String name, String password, Role role) {
this.name = name;
this.password = password;
this.role = role;
}
// Getter和Setter
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}
package com.example.training.service;
import com.example.training.entity.User;
import com.example.training.repository.UserRepository;
import org.springframework.stereotype.Service;
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User register(String name, String password,User.Role role) {
if (userRepository.findByName(name) != null) {
throw new RuntimeException("用户名已存在");
}
User user = new User();
user.setName(name);
user.setPassword(password);
user.setRole(role);
return userRepository.save(user);
}
public User login(String name, String password) {
User user = userRepository.findByName(name);
if (user == null || !user.getPassword().equals(password)) {
throw new RuntimeException("用户名或密码错误");
}
return user;
}
}
package com.example.training.controller;
import com.example.training.entity.User;
import com.example.training.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;
@Controller
public class AuthController {
private final UserService userService;
public AuthController(UserService userService) {
this.userService = userService;
}
@GetMapping("/")
public String home() {
return "redirect:/login";
}
@GetMapping("/login")
public String showLoginForm() {
return "login";
}
@PostMapping("/login")
public String login(@RequestParam String name,
@RequestParam String password,
HttpSession session,
Model model) {
try {
User user = userService.login(name, password);
session.setAttribute("user", user);
// 根据角色跳转不同页面
if (user.getRole() == User.Role.ADMIN) {
return "redirect:/admin/dashboard";
}
// 普通员工跳转到工作台页面(需要后续开发)
return "redirect:/employee/dashboard";
} catch (Exception e) {
model.addAttribute("error", e.getMessage());
return "login";
}
}
@GetMapping("/register")
public String showRegisterForm() {
return "register";
}
@PostMapping("/register")
public String register(@RequestParam String name,
@RequestParam String password,
@RequestParam User.Role role,
Model model) {
try {
userService.register(name, password, role);
model.addAttribute("message", "注册成功,请登录!");
return "redirect:/login";
} catch (Exception e) {
model.addAttribute("error", e.getMessage());
return "register";
}
}
@GetMapping("/logout")
public String logout(HttpSession session) {
session.invalidate();
return "redirect:/login";
}
}
posted on 2025-04-21 20:54 我爱玩原神(原神大王) 阅读(10) 评论(0) 收藏 举报
浙公网安备 33010602011771号