gpt4 book ai didi

authentication - 在同一个页面打开id认证

转载 作者:行者123 更新时间:2023-12-04 07:01:01 24 4
gpt4 key购买 nike

我有一个要求,登录页面在弹出窗口中打开主页,

这是我在正常身份验证中处理它的方式:

<http>
...
<form-login login-page="/Login.html" authentication-failure-url="/LoginHandler.jsp" always-use-default-target="false" default-target-url="/LoginHandler.jsp"/>
...
</http>

登录页面创建一个 ajax 调用(在内部使用 GWT 的请求构建器)并读取响应 html 页面。所以,如果 LoginHandler.jsp 包含“success”,则登录成功,
或者如果 LoginHandler.jsp 包含“failure”,则登录失败。

无论哪种情况,Login.html 都知道身份验证失败或成功,并在成功时打开一个包含主屏幕的弹出窗口。

现在,我需要让我的系统支持 OpenID,如果我理解得好,open id 身份验证的工作方式如下,如果成功,它将打开成功 url(在我的例子中主要是 LoginHandler.jsp),但是,如果它失败......它打开了目标服务器的登录屏幕(例如谷歌的登录屏幕),我如何设计我的代码以在这个 senario 中工作?

这是我的配置:
<openid-login authentication-failure-url="/LoginHandler.jsp" default-target-url="/LoginHandler.jsp" user-service-ref="openIdUserService"/>

这是我使用 RequestBuilder 登录的方式:
// Encode values for sending as a post request.
String postData = "j_username=" + username
+ "&j_password=" + password
+ ((isRemembered) ? "&_spring_security_remember_me=on" : "");
String serverUrl = URL.encode("j_spring_security_check");

/*
* Authenticate the user using a request builder to send the request to the server.
* <p>on successful authentication, open main screen in a pop up
* */
try
{
RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.POST, URL.encode(serverUrl));
requestBuilder.setHeader("Content-Type", "application/x-www-form-urlencoded");
requestBuilder.sendRequest(postData, new RequestCallback()
{
public void onError(Request request, Throwable exception)
{
//Do nothing
}

public void onResponseReceived(Request request, Response response)
{
String responseText = response.getText();
int indexStart = responseText.indexOf(startMessageIndicator) + startMessageIndicator.length();
int indexEnd = responseText.indexOf(endMessageIndicator);
String text = responseText.substring(indexStart, indexEnd);

//Login was a success
if (text.contains(successMessageIndicator))
{
//Woophie !! code for success comes here.
}
else if (text.contains(errorMessageIndicator))
{
//Ooops ! get the error message encoded in the page
}
}
});
}
catch (RequestException e)
{
//Do nothing
}

有什么方法可以使用相同的方法进行基于开放 ID 的身份验证?

最佳答案

OpenID 不能像您描述的那样工作。用户在您的站点上输入他们的 OpenID 标识符,并且将始终被重定向到 OpenID 提供商 (OP) 的站点进行验证。验证后,用户将被重定向回您的网站。他们不能同时输入他们的 OpenID 标识符和 OP 在您网站上预期的密码,就像他们可以使用传统的用户名/密码表单例份验证一样。希望有帮助!

关于authentication - 在同一个页面打开id认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1846533/

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