feat: 实现基于JSON的登录API和安全认证
refactor: 重构登录逻辑和会话管理 fix: 修复会话ID类型和WebSocket连接问题 build: 更新项目版本号和添加Servlet API依赖 style: 清理无用导入和注释代码
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package com.ecep.contract.ds.other.controller;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
@@ -8,6 +11,7 @@ import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -50,4 +54,35 @@ public class EmployeeController {
|
||||
employeeService.delete(employee);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录用户的信息
|
||||
* 包括employeeId和sessionId
|
||||
*/
|
||||
@RequestMapping("/currentUser")
|
||||
public Map<String, Object> getCurrentUser(HttpSession session) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
// 获取当前登录用户
|
||||
User currentUser = SecurityUtils.getCurrentUser();
|
||||
if (currentUser != null) {
|
||||
// 根据用户名查找Employee对象
|
||||
Employee employee = employeeService.findByName(currentUser.getUsername());
|
||||
if (employee != null) {
|
||||
result.put("employeeId", employee.getId());
|
||||
result.put("sessionId", session.getId());
|
||||
result.put("success", true);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 处理异常
|
||||
}
|
||||
|
||||
// 如果获取失败,返回错误信息
|
||||
result.put("success", false);
|
||||
result.put("error", "无法获取当前用户信息");
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,21 +4,14 @@ import java.util.List;
|
||||
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import org.springframework.data.repository.PagingAndSortingRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.ecep.contract.ds.MyRepository;
|
||||
import com.ecep.contract.model.Employee;
|
||||
import com.ecep.contract.model.EmployeeAuthBind;
|
||||
|
||||
@Lazy
|
||||
@Repository
|
||||
public interface EmployeeAuthBindRepository extends
|
||||
// JDBC interfaces
|
||||
CrudRepository<EmployeeAuthBind, Integer>, PagingAndSortingRepository<EmployeeAuthBind, Integer>,
|
||||
// JPA interfaces
|
||||
JpaRepository<EmployeeAuthBind, Integer>, JpaSpecificationExecutor<EmployeeAuthBind> {
|
||||
public interface EmployeeAuthBindRepository extends MyRepository<EmployeeAuthBind, Integer> {
|
||||
List<EmployeeAuthBind> findAllByEmployee(Employee employee, Sort sort);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user