我写在这里是因为我找不到我的问题的明确答案:
我的项目正在使用 Spring MVC 和 Spring Security。我为 Web 应用程序(当然使用 Java)很好地安装了两者。我可以使用 post 和 get 方法访问,但只有在用户通过 Spring Security 的通常形式连接之后。
从现在开始,用户对这样的地址发出请求:
../../get.request?request=getListCommand
其中 get.request 是 Spring MVC 的映射。只有在用户通过身份验证后才能启用此访问权限!
我需要做的: 添加直接访问此请求的可能性,而无需先前已通过身份验证,例如使用这样的地址:
http://123.123.123.123:123/get.request?request=getListCommand&j_password=myPassword&j_username=myName
或者
same thing with the post protocol and the params given (request=getListCommand, j_password=myPassword, j_username=myName)
当然,必须在执行请求并将结果发回之前完成身份验证。
我在许多网站上搜索或直接在 Spring 安全网站上搜索。他们谈论过滤器链、自己的用户名认证、RMI;但我并没有真正找到一个完整的例子来做我上面介绍的事情。
感谢任何可以帮助我的人。
ps:我使用所有默认或最简单的Spring安全配置(没有风水'风格:-))
这是我的安全上下文 xml 文件
<http realm="NexCap Up"
auto-config="true"
access-denied-page="/www/jsp/authentication/accessDenied.jsp"
create-session="always"
disable-url-rewriting="true">
<port-mappings>
<port-mapping http="8084" https="8443"/>
</port-mappings>
<intercept-url pattern="/www/jsp/authentication/connexion.jsp"
access='IS_AUTHENTICATED_ANONYMOUSLY' requires-channel="https"/>
<intercept-url pattern="/www/jsp/authentication/connexionFailed.jsp"
access='IS_AUTHENTICATED_ANONYMOUSLY' />
<intercept-url pattern="/www/jsp/authentication/applicationExit.jsp"
access='IS_AUTHENTICATED_ANONYMOUSLY' />
<intercept-url
pattern="/get.Request"
method="GET"
access="ROLE_REMOTE" />
<intercept-url
pattern="/post.Request"
method="POST"
access="ROLE_REMOTE" />
<intercept-url pattern="/**"
access="ROLE_REMOTE,ROLE_SCRIPT" />
<form-login
authentication-failure-url="/www/jsp/authentication/connexionFailed.jsp"
login-page="/www/jsp/authentication/connexion.jsp"
default-target-url="/www/jsp/index.jsp"
always-use-default-target="true"/>
<logout
logout-success-url="/www/jsp/authentication/applicationExit.jsp"
invalidate-session="true"/>
<session-management
invalid-session-url="/www/jsp/authentication/invalidSession.jsp"
session-authentication-error-url = "/www/jsp/authentication/authentificationError.jsp"
session-fixation-protection="none">
<!-- Sessions concurrentes -->
<concurrency-control
error-if-maximum-exceeded="false"
expired-url="/www/jsp/authentication/sessionExpired.jsp"
max-sessions="1" />
</session-management>
</http>
以及关于spring security的web.xml文件部分
<security-constraint>
<web-resource-collection>
<web-resource-name>Security</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<filter>
<display-name>springSecurityFilterChain</display-name>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/secu-config.xml
</param-value>