gpt4 book ai didi

spring-security - Spring Security 3.0表单登录转发到外部资源

转载 作者:行者123 更新时间:2023-12-02 03:31:46 26 4
gpt4 key购买 nike

form-login 标记可以使用外部资源的 URL 吗?

我有两个 Web 服务在不同的应用程序上下文中运行 [案例 #1]。它们也可能位于不同的机器上[案例#2]。

我希望第一个服务使用 Spring Security 来强制对某些方法进行身份验证。我希望将第二个服务用作身份验证机制。如果请求在尝试调用第一个服务上的 protected 方法时未经过身份验证,则应将请求转发到第二个服务进行身份验证。

两项服务均已启动并正在运行。我已经配置了第一个服务并且“正在运行”,除了当用户尚未经过身份验证时它将请求转发到的 URL 之外。

如果第一个 Web 服务位于 http://server1/community,Spring Security 能否将用户转发到在单独上下文中运行的其他服务?

例如:

<security:form-login 
login-page="/auth/login.jsp" />

其中 /auth 是第二个服务的上下文。

或者,它可以完全转发到不同的服务器吗?

<security:form-login 
login-page="http://server2/auth/login.jsp" />

当我尝试上面的第一个配置时,转发的 URL 变成了 http://server1/community/auth/login.jsp。我想要http://server1/auth/login.jsp

第二个配置产生http://server1/communityhttp://server2/auth/login.jsp

显然,URL 被认为是相对于当前上下文的。有没有办法改变这种行为?或者,有没有更好的方法来做我想做的事情,但我只是还没有偶然发现? ^__^

感谢您的帮助!

--JS

PS:我之前错误地将此作为之前帖子的“答案”发布。抱歉。

最佳答案

是的,有一种方法可以做你想做的事。您需要的关键字是 form-login 元素上的 login-processing-url

示例:

<form-login login-page="/auth/login" login-processing-url="/auth/example_security_check"/>

然后在你的 jsp 页面中,你想将操作设置为你放在那里的任何内容:

<form action="example_security_check" method="post">
<label for="j_username">Login</label>:
<input id="j_username" name="j_username" size="20" maxlength="50" type="text"/>
<br/>

<label for="j_password">Password</label>:
<input id="j_password" name="j_password" size="20" maxlength="50" type="password"/>
<br/>

<input type="submit" value="Login"/>
<br/>
<br/>

<input id="_spring_security_remember_me" name="_spring_security_remember_me" type="checkbox" value="true"/>
<label for="_spring_security_remember_me">Remember Me?</label>
</form>

该属性的文档位于此处

http://static.springsource.org/spring-security/site/docs/3.0.x/reference/appendix-namespace.html

关于spring-security - Spring Security 3.0表单登录转发到外部资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4129121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com