magic-api中CustomAuthorizationInterceptor 登录鉴权的方法里面 我注册到Spring中之后 打开页面直接是平台页面,没有登录页面,也不访问login的方法直接访问getUserByToken方法获取token,, 没登录直接访问getUserByToken方法 然后token为空 我下面的代码没法走
2条回答 默认 最新
关注 首先,我需要提醒你检查一下你的登录逻辑是否执行。请确保你的API中有一个登录路径,该路径在请求/login时返回一个有效的Token。记住,你需要先登录才能获取一个有效Token,然后你才能用这个Token来获取用户信息。
你提到你正在使用CustomAuthorizationInterceptor进行登录鉴权。它可能已经设置了跳过/login的鉴权,这就是为什么你的应用没有阻止你从未经授权的请求到达getUserByToken方法。
在大多数情况下,你的拦截器应该将不包含有效Token的请求重定向到登录页面。如果/login路径被设置为无需鉴权,那么它可能没做这件事。此外,如果你从未访问过登录页面,那么你的请求将不包含Token,这就是为什么你会收到一个错误消息,说你的Token为空。
你的代码可能应该像这样:public class CustomAuthorizationInterceptor extends HandlerInterceptorAdapter { // ... @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String uri = request.getRequestURI(); // Allow the login requests to pass if (uri.startsWith("/login")) { return true; } // Get the Token from the HTTP headers String token = request.getHeader("token"); // If the Token is null, redirect the user to the login page if (token == null) { response.sendRedirect("/login"); return false; } // Check if the Token is valid // This assumes you have a `tokenService` that can validate the Tokens if (!tokenService.isTokenValid(token)) { response.sendRedirect("/login"); return false; } // If the Token is valid, allow the request to pass return true; } // ... }
这样,如果有一个请求到达拦截器,且它不是登录请求 /login,而且包含的Token无效,那么请求会被重定向到登录页面 /login。
这是一个通用的解决方案,你需要根据你的实际场景进行修改。它不一定能直接套用在你的项目中,因为我没有你的项目的详细代码和上下文。解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Linux权限管理相关操作(求解答)
- ¥15 Bug traq 数据包 大概什么价
- ¥15 在anaconda上pytorch和paddle paddle下载报错
- ¥25 自动填写QQ腾讯文档收集表
- ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
- ¥15 求一份STM32F10X的I2S外设库
- ¥15 android 打包报错
- ¥15 关于stm32的问题
- ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?