2012-06-20 46 views
0

目前我通过Spring Filter和Servlet使用Spring Security认证。如果通过java代码访问URL,Spring认证失败

<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 --> 

在我的弹簧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。

请注意,当我点击URL时,页面被重定向到类似http://localhost:8080/context/spring_security_login的东西。

你的帮助将会真心感谢你们!

回答

1

您应该在用于验证的URL中传递j_usernamej_password

例如:

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

或者通过POST,这仅仅是默认不允许的方法给他们。 – Xaerxess