基于Session的认证方式
认证流程
基于Session认证方式的流程是,用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话),而发给客户端的 sesssion_id 存放到 cookie 中,这样用客户端请求时带上 session_id 就可以验证服务器端是否存在session 数据,以此完成用户的合法校验。当用户退出系统或session过期销毁时,客户端的session_id也就无效了。
基于Session的认证机制由Servlet规范定制,Servlet容器已实现,用户通过HttpSession的操作方法即可实现,如下是HttpSession相关的操作API
核心代码:
定义拦截器
@Component public class SimpleAuthenticationInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //在这个方法中校验用户请求的url是否在用户的权限范围内 //取出用户的身份信息 Object object =request.getSession().getAttribute(UserDto.SESSION_USER_KEY); if (object==null){ writeContent(response,"请登录"); } UserDto user = (UserDto) object; //请求的url String requestURI = request.getRequestURI(); if (user.getAuthorities().contains("p1")&&requestURI.contains("/r1")){ return true; } if (user.getAuthorities().contains("p2")&&requestURI.contains("/r2")){ return true; } writeContent(response,"权限不足,拒绝访问"); return false; } //响应输出 private void writeContent(HttpServletResponse response, String msg) throws IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); writer.print(msg); writer.close(); } }
之后对拦截器进行注入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY