java登录后保存到seesion,调用带有指定注解的接口时检查是否登录

动态 未结 0 242
小小草
小小草 LV1 2023年9月23日 23:20 发表
以下是一个Java登录后保存到session,调用带有指定注解的接口时检查是否登录的示例: 1. 定义一个注解`@LoginRequired`,用于标记需要登录才能访问的接口。 ```java import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface LoginRequired { } ``` 2. 在登录成功后将用户信息保存到session中。 ```java @RequestMapping("/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { // 验证用户名和密码 if (isValid(username, password)) { // 登录成功,将用户信息保存到session中 User user = new User(username); session.setAttribute("user", user); return "redirect:/home"; } else { // 登录失败,返回错误页面 return "error"; } } ``` 3. 编写一个拦截器`LoginInterceptor`,用于拦截所有带有`@LoginRequired`注解的请求,并检查用户是否已经登录。 ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; LoginRequired loginRequired = handlerMethod.getMethodAnnotation(LoginRequired.class); if (loginRequired != null) { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); if (user == null) { // 用户未登录,跳转到登录页面 response.sendRedirect("/login"); return false; } } } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request,
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复