如果通过java代码访问URL,则Spring身份验证失败

时间:2012-06-20 09:38:12

标签: java spring java-ee servlets spring-security

目前我正在通过Spring Filter和Servlet使用Spring Security身份验证。

<servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/remoting/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/admin</url-pattern>
</servlet-mapping>

<!-- Enables Spring Security -->
<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>
<!-- End Spring Security -->

在我的spring-security.xml中

<authentication-manager alias="authenticationManager">
    <authentication-provider ref="myAppAuthenticationProvider"/>
</authentication-manager>

<beans:bean id="myAppAuthenticationProvider"
        class="com.filter.MyAppAuthenticationProvider">
    <beans:property name="repository" value="#{deployment['globalregistry.repository']}"/>
</beans:bean>

现在,当我点击例如:http://localhost:8080/context/admin?action=authenticate

的网址时

j_username:用户
j_password:密码

我得到一个用于输入用户和密码的屏幕,该屏幕由spring-security验证。

现在,当我尝试通过HTTPPost API通过Java程序访问上述URL时,我得到一个重定向错误响应为302.现在如何绕过登录屏幕进行验证并直接进行身份验证而不重定向到网页。并使用我的java程序提供j_username和j_password。

请注意,当我点击网址时,网页会重定向到此http://localhost:8080/context/spring_security_login

你们的帮助将会非常感激。!

1 个答案:

答案 0 :(得分:1)

您应该在用于身份验证的网址中传递j_usernamej_password

例如:

http://localhost:8080/yourAppContext/j_spring_security_check?j_username=user&j_password=pass