我使用的是Spring MVC(4.1.6 RELEASE)和Spring Security(4.0.1 RELEASE)。
当我尝试提交我的登录表单时,我收到“HTTP状态405-不支持请求方法'POST'”错误。
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/jpaContext.xml</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/security-config.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>ISMServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/servlet-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ISMServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
spring-security.xml
<context:annotation-config />
<context:component-scan base-package="com.sam"/>
<security:http auto-config='true' >
<security:intercept-url pattern="/index.jsp" access="permitAll" />
<security:intercept-url pattern="/login.html" access="permitAll" />
<security:intercept-url pattern="/**" access="hasRole('USER')" />
<security:access-denied-handler error-page="/403.html"/>
<security:form-login login-page="/login.html" authentication-failure-url="/error.html" default-target-url="/home.html" />
<security:logout logout-success-url="/index.jsp" delete-cookies="JSESSIONID"/>
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:password-encoder hash="bcrypt" />
<security:jdbc-user-service data-source-ref="dataSource" />
</security:authentication-provider>
</security:authentication-manager>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ism" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
form.html
<form action="j_spring_security_check" name="f" method="post" >
<input name="j_username" type="text" />
<input name="j_password" type="password"/>
<input name="submit" id="button" type="submit" value="enter" />
</form>
servlet配置。xml
<context:component-scan base-package="com.sam.controller"/>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="contentNegotiationManager">
<bean class="org.springframework.web.accept.ContentNegotiationManager">
<constructor-arg>
<bean class="org.springframework.web.accept.PathExtensionContentNegotiationStrategy">
<constructor-arg>
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="autodetectAnnotations" value="true" />
</bean>
</constructor-arg>
</bean>
</list>
</property>
</bean>
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" p:paramName="language"/>
</mvc:interceptors>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" p:defaultLocale="fa"/>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basename="messages">
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" p:order="2"/>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0"/>
contoller.java
@Controller
public class UserController {
@RequestMapping(value = "home", method = RequestMethod.GET)
public String goHomePage(Model model) throws IOException {
return "home";
}
}
我认为csrf保护在spng-security 4中默认启用。所以在您的登录表单中添加这一行
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
登录提交操作的默认登录endpoint为/login。您的登录名中有。htmlendpointj\u spring\u security\u check,其中spring不知道如何处理此映射。因此,也可以尝试使用ID/名称用户名/密码的输入元素:
<form action="/login" name="f" method="post" >
<input id="username" name="username" type="text" />
<input id="password" name="password" type="password"/>
<input name="submit" id="button" type="submit" value="enter" />
</form>
请在中修改这两个条目(servlet-config.xml、spring security.xml)
<servlet-mapping>
<servlet-name>ISMServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我有以下控制器: 13-feb-2016 16:55:09.442警告[http-apr-8080-exec-9]org.springframework.web.servlet.PageNotFound.HandleHttpRequestMethodNotSupported请求方法“Put”不受支持 我不明白这怎么可能。下面是我的依赖项: 编辑2: 2016-02-14 12:30:56 DEBU
问题内容: 我收到此错误: 我正在尝试做的是创建一个带有下拉框的表单,该表单会根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应运行.jsp页面中的函数,然后提交提交的页面,然后在框中再次加载相应的值。 但是我收到此HTTP状态405错误。我在互联网上搜索了解决方案,但找不到任何有帮助的方法。这是我的代码的相关部分: jsp页面的一部分 控制器的一部分: 我怎么会得到这个
我收到这个错误:< code>HTTP状态405 -不支持请求方法“POST ” 我想做的是创建一个带有下拉框的表单,该下拉框根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应该运行. jsp页面中的函数,然后提交的页面再次加载框中的相应值。 但是我收到此HTTP状态405错误。我已经在互联网上搜索了解决方案,但找不到任何有帮助的东西。以下是我的代码的相关部分: jsp页
我有Spring MVC的Spring Security。当我尝试注册时,它给了我405个不支持的“帖子”。我已在安全配置中禁用csrf令牌。让我知道我哪里出错了? 我的登录页面: 授权由LoginController处理: 这是我的Spring Security配置类:
当我尝试实现Spring Security性时,出现以下错误- 控制器: web.xml Spring-security.xml 登录名。jsp 错误:- http://localhost:8080/EmployeeManagement/j_spring_security_check
该场景是用户选择一些产品,然后单击进行支付。在这里,我将他/她重定向到IPG(银行互联网支付网关),并在付款完成和定稿时传递我的返回url。在我添加spring security之前,一切正常。 但是如果在一些内部视图中发布这个url,一切都会恢复正常。 这是正常工作(spring security启用,一切正常) 在浏览器中查看银行IPG的来源(https://pna.shaparak.ir/C