【发布时间】:2018-08-14 16:26:44
【问题描述】:
我正在使用 Spring Boot 安全性来处理登录功能。我不知道登录的 post 方法根本不起作用。它总是会抛出以下异常。
There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'POST' not supported
有人可以建议吗?这是我的代码。您也可以从GitHub 找到它。
安全配置
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll().and().csrf().disable();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
}
}
家庭控制器
@Controller
public class HomeController {
@Autowired
private UserService userService;
@RequestMapping(value = { "/", "/login" }, method = RequestMethod.GET)
public ModelAndView login(Model model) {
ModelAndView modelAndView = new ModelAndView("auth/login");
User user = new User();
modelAndView.addObject(user);
return modelAndView;
}
}
登录.html
<form class="form-horizontal" role="form" th:action="@{login}" method="post">
<div class="form-group">
<label class="col-md-4 control-label">Username</label>
<div class="col-md-6">
<input type="text" class="form-control" name="username" th:placeholder="Username"/>
</div>
</div>
<div class="form-group">
<label for="password" class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input type="password" class="form-control" name="password" th:placeholder="Password"/>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-sign-in"></i> Login
</button>
</div>
</div>
<div align="center" th:if="${param.error}">
<p style="font-size: 20; color: #FF1C19;">Email or Password invalid, please verify</p>
</div>
</form>
【问题讨论】:
-
通过更新配置解决,如下所示。
http.authorizeRequests().antMatchers("/resources/**", "/", "/register").permitAll().anyRequest().authenticated() .and().csrf().disable() .formLogin().loginPage("/login").defaultSuccessUrl("/dashboard").usernameParameter("username") .passwordParameter("password").failureUrl("/login?error=true").permitAll().and().logout().permitAll(); -
我也面临同样的问题。 stackoverflow.com/questions/69450810/…你能提出问题吗?
-
另外你是从哪里发现在登录过程中调用 POST 进行身份验证的?
标签: java spring-boot spring-security login