spring - 在自定义登录页面登录后找不到 404 页面
问题描述
我是 Spring 的新手,我正在尝试实现自定义登录页面。我可以重定向到自定义登录页面,但是当我点击页面中的提交按钮时,它会出现错误 404。网址转到:http://localhost:12345/login?username=abcd&password=qwer
这是我的 htm、控制器以及安全配置的代码:
安全配置.java
http
.authorizeRequests()
.antMatchers("/main",
"/main#/home",
"/login**",
"/resources/**",
"/css/**",
"/images/**",
"/js/**",
"/std/**",
"/system/**",
"/favicon.ico",
"/rest/**",
"/rest/user/**" ).permitAll()
.anyRequest().authenticated()
.and().csrf().disable()
.formLogin()
.loginPage("/main#/login").permitAll()
.defaultSuccessUrl("/main#/home")
.failureUrl("/main#/page/b").permitAll();
登录控制器.Java
@RestController
@RequestMapping(value = "/rest/user")
public class LoginController
{
@RequestMapping(value = "login")
public String login(Model model, String error, String logout) {
if (error != null)
model.addAttribute("errorMsg", "Your username and password are invalid.");
if (logout != null)
model.addAttribute("msg", "You have been logged out successfully.");
return "login";
}
}
登录内容.htm
<div class="col-md-6 col-md-offset-3">
<h2>Login</h2>
<form name="form" action="/login" ng-controller="LoginController" role="form">
<div class="form-group" ng-class="{ 'has-error': form.username.$dirty && form.username.$error.required }">
<label for="username">Username</label>
<input type="text" name="username" id="username" class="form-control" ng-model="user.username" required />
<span ng-show="form.username.$dirty && form.username.$error.required" class="help-block">Username is required</span>
</div>
<div class="form-group" ng-class="{ 'has-error': form.password.$dirty && form.password.$error.required }">
<label for="password">Password</label>
<input type="password" name="password" id="password" class="form-control" ng-model="user.password" required />
<span ng-show="form.password.$dirty && form.password.$error.required" class="help-block">password is required</span>
</div>
<input type="submit" ng-click="login(user)" value="Submit">
</form>
谢谢!
解决方案
最后,我将 Login-content.htm 中的“动作”修改为另一个词(例如 perform_login),并在 SecurityConfig.java 中添加了 .loginProcessingUrl("/perform_login").permitAll()。
此外,另一个问题是 Spring Security 需要有一个特定的 POST 方法才能对其进行身份验证。我在 HTM 页面中添加了 method="POST"。
谢谢!
推荐阅读
- python - 如何使用 Python 对 Elasticsearch 中的对象执行多重聚合?
- reactjs - Visual Studio 2017 - 如何使代码格式化遵循 reactjs 项目 eslint 规则?
- python - 通过另一个变量 Tensorflow 切片变量
- javascript - GatsbyJS GraphQL 查询是否与编写它的组件相关联?
- spring-boot - Spring boot + Swagger UI 如何告诉端点需要不记名令牌
- apache-kafka-connect - Debezium MySQL (MariaDB) 连接器:如何从以前的 bin-log 文件位置恢复
- java - 使用janusgraph后端HBase时MasterNotRunning的NoClassDefFound
- alfresco - 通过传递多个业务键[processBusinessKey] 值来获取流程实例
- webpack - 如何添加appcache插件?
- java - 在流中的任何阶段失败时重试akka中的流