本文介绍了Spring Security-405请求方法'POST'不支持 – java程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。
对技术面试,学习经验等有一些体会,在此分享。
我已经在项目中实现了Spring Security,但是当我尝试登录时却获得了状态405。我已经在csrf
中添加了form
令牌。
这是我发送用户名和密码时遇到的错误:HTTP Status 405 - Request method 'POST' not supported
春季版本:4.0.2。发布
<div class="login-form"> <c:url var="loginUrl" value="/login" /> <form action="${loginUrl}" method="post" class="form-horizontal"> <c:if test="${param.error != null}"> <div class="alert alert-danger"> <p>Invalid username and password.</p> </div> </c:if> <c:if test="${param.logout != null}"> <div class="alert alert-success"> <p>You have been logged out successfully.</p> </div> </c:if> <div class="input-group input-sm"> <label class="input-group-addon" for="username"> <i class="fa fa-user"></i> </label> <input type="text" class="form-control" id="username" name="clientusername" placeholder="Enter Username" required> </div> <div class="input-group input-sm"> <label class="input-group-addon" for="password"> <i class="fa fa-lock"></i> </label> <input type="password" class="form-control" id="password" name="clientpassword" placeholder="Enter Password" required> </div> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> <div class="form-actions"> <input type="submit" class="btn btn-block btn-primary btn-default" value="Log in"> </div> </form> </div>
安全配置:
@Configuration @EnableWebSecurity public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Autowired @Qualifier("G2BUserDetailsService") UserDetailsService userDetailsService; @Autowired public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/", "/home").permitAll() .antMatchers("/admin/**").access("hasRole('ADMIN')") .and().formLogin().loginPage("/login") .usernameParameter("clientusername").passwordParameter("clientpassword") .and().csrf() .and().exceptionHandling().accessDeniedPage("/Access_Denied"); // .and().csrf().disable(); }
控制器:
@RequestMapping(value = "/login", method = RequestMethod.GET) public ModelAndView loginPage() { return new ModelAndView("login"); } @RequestMapping(value="/logout", method = RequestMethod.GET) public String logoutPage (HttpServletRequest request, HttpServletResponse response) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth != null){ new SecurityContextLogoutHandler().logout(request, response, auth); } return "redirect:/login?logout"; } @RequestMapping(value = "/Access_Denied", method = RequestMethod.GET) public ModelAndView accessDeniedPage(ModelMap model) { model.addAttribute("user", getPrincipal()); return new ModelAndView("accessDenied"); } @RequestMapping(value = "/admin", method = RequestMethod.GET) public ModelAndView adminPage(ModelMap model) { model.addAttribute("user", getPrincipal()); return new ModelAndView("admin"); } private String getPrincipal(){ String userName = null; Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof UserDetails) { userName = ((UserDetails)principal).getUsername(); } else { userName = principal.toString(); } return userName; }
关于此问题的几乎每个主题都说我们需要添加csrf
令牌,但是我已经添加了。我想念什么吗?
参考方案
您可以为一个网址设置两个端点。但是您不能根据需要设置任何请求参数。当我看到您的登录请求映射时,可以这样设置请求方法:
@RequestMapping(value = "/login", method = { RequestMethod.GET, RequestMethod.POST }) public ModelAndView loginPage() { return new ModelAndView("login"); }
请求方法'POST'不支持,并且亚马逊弹性beantalk – java
尝试在具有Java注释(4.2.1版)的控制器中使用post方法,并在本地tomcat中成功使用,但是当我移至Amazon beantalk时,出现以下错误:日志:28-Sep-2015 10:34:11.339 WARNING [http-nio-8080-exec-10] org.springframework.web.servlet.PageNotFo…
Java-如何将此字符串转换为日期? – java
我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…
将列表的python排序转换为Java代码。 – java
我正在尝试将将items列表排序为Java代码的python代码进行转换。如何在Java中进行这种排序?python code:import re items = ['10H', '10S', '2H', '3S', '4S', '6C',…
如何避免用户输入中的撇号 – java
因此,我正在将信息从.csv文件导入数据库。但是我在csv文件中用户输入的描述遇到了麻烦,因为它们包含的单引号破坏了SQL导入。我的导入语句是字符串sqlJob ="INSERT INTO job (ID, Job_Contact, Internal_Comment, Customer_Name," + " Duration, …
如何从php中获取datatables jQuery插件的json数据 – php
我是PHP的新手,正在尝试使用Datatables jQuery插件。我知道我必须从.php文件中获取数据,然后在数据表中使用它,但是我似乎无法通过ajax将其传递给数据表。我设法从数据库中获取数据,并对其进行json编码,但是后来我不知道如何在我的index.php文件中调用它,并在其中显示它。我究竟做错了什么?这是我的代码:HTML(已编辑): <…
部分转自互联网,侵权删除联系
最新评论