使用拦截器做登录
2022/3/26 23:26:23
本文主要是介绍使用拦截器做登录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
定义controller
@RestController public class TestController { @RequestMapping("/login") public String login(HttpSession session,String name,String password){ System.out.println(name); System.out.println(password); // 这个需要查数据库判断用户名和密码是否正确 if(Objects.equals(name, "xx") && Objects.equals(password, "xx")) { // 成功服务器记录sessionid,并设置生存时间,可以自行设置删除策略 LoginInterceptor.MAP.put(session.getId(),16); return "成功"; } return "失败"; } @RequestMapping("/index") public String index(){ return "登录"; } @RequestMapping("/hello") public String helloWorld(){ return "hello world"; } @RequestMapping("/hello02") public String helloWorld02(){ return "hello world 02"; } }
编写拦截的具体逻辑
已经登录,可以继续执行
package com.example.dockerredisqueue.Interceptor; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; public class LoginInterceptor implements HandlerInterceptor { // 这里我们也可以放在redis public static final HashMap<String, Integer> MAP = new HashMap<>(); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 如果我们的map有浏览器存过来的sessionid我们就任务他是已经登录了。 if(MAP.containsKey(request.getRequestedSessionId())) { return true; } // 失败我们跳转新的页面 request.setAttribute("msg","登录出错"); request.getRemoteHost(); request.getRequestDispatcher("/index").forward(request,response); return false; } }
配置拦截器的作用域
package com.example.dockerredisqueue.Interceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.handler.MappedInterceptor; @Configuration public class InterceptorConfig { @Bean public MappedInterceptor loginInterceptor(){ // 设置拦截器的作用域 return new MappedInterceptor(new String[]{"/**"},new String[]{"/login","/index"},new LoginInterceptor()); } }
这篇关于使用拦截器做登录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南