Spring Security多角色登录异常:普通用户登录请求404排查
Spring MVC普通用户登录404问题排查方案
1. 核对请求映射配置
- 检查处理普通用户登录的
@Controller类,确认是否存在**精确匹配/user_login**的请求映射方法,示例:@PostMapping("/user_login") public String handleUserLogin(User user, HttpSession session) { // 数据库校验逻辑 return "user/index"; } - 对比管理员登录的
/loginAdmin映射,确保路径拼写、请求方法(POST/GET)完全一致,Spring MVC默认路径大小写敏感。
2. 检查前端表单提交路径
- 验证普通用户登录表单的
action属性是否正确,需包含项目上下文路径(若存在):<form action="${pageContext.request.contextPath}/user_login" method="post"> <!-- 账号、密码输入框 --> <button type="submit">登录</button> </form> - 避免将
action误写为/loginUser或遗漏上下文路径,导致请求路径无效。
3. 排查DispatcherServlet与拦截器配置
- 确认
web.xml中DispatcherServlet的映射范围是否覆盖/user_login,推荐配置为/(需做好静态资源放行):<servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> - 检查自定义拦截器/过滤器是否拦截了
/user_login请求,需确保登录请求能直接通过:@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestUri = request.getRequestURI(); // 放行登录请求 if (requestUri.contains("/user_login")) { return true; } // 其他拦截逻辑 return false; }
4. 分析日志定位具体问题
- 查看Tomcat访问日志,确认404请求的完整路径(如
"POST /your-project/user_login HTTP/1.1" 404),核对项目上下文路径是否匹配。 - 检查Spring MVC日志,确认是否存在控制器方法未执行、视图解析异常等报错信息。
5. 验证视图解析器与页面路径
- 确认视图解析器的前缀、后缀配置正确,保证返回的
user/index能映射到实际JSP文件:<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> - 检查
/WEB-INF/views/user/index.jsp文件是否存在,路径、文件名(含大小写)是否完全匹配。
内容的提问来源于stack exchange,提问作者Mahesh Kumar
相关产品推荐
相关产品推荐

