2117847720qq

导航

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)    收藏  举报