繁体   English   中英

在GWT中:如何为页面添加书签并在身份验证后能够重定向到该页面?

[英]In GWT: how to bookmark a page and be able to be redirected to it after authentication?

我已经在我的GWT应用中实现了OAuth2身份验证机制。 OAuth2服务器基于Spring框架3.x(使用其Spring安全性OAuth2实现)。

我正在使用OAuth2 “授权代码流”来对用户进行身份验证(尽管在我们的案例中隐式流可能是一个更好的选择)。 因此,首先,将用户重定向到OAuth2服务器身份验证页面,输入用户的凭据,如果身份验证成功,则将其重定向回带有oauth代码的url。 然后,他将拨打第二个电话来从服务器的OAuth2令牌的访问。

现在,问题是,我们希望用户能够在应用程序中为页面添加书签直接访问它 如果他已经通过身份验证,那么他将可以直接访问它(不再涉及身份验证)。 否则,他将不得不进入OAuth2身份验证流程,但最后,应将其重定向回他打算一开始访问的加标签的页面。

用户成功通过身份验证后,如何存储此页面 URL并重定向到该页面

任何帮助,将不胜感激。 谢谢!

已编辑

初始url重定向是通过javascript的document.location.href完成的

在OAuth 2.0 授权授予流中维护原始URI的方法是在state参数中传递原始URI ,以便重定向端点将其交换访问令牌授权代码后,可以使用它来将用户重定向回该URI 。

仅供参考,这正是Google在其OAuth 2.0文档中的示例中所建议的,例如https://developers.google.com/accounts/docs/OAuth2Login


原始答案:

问题是使用场所的URL的哈希部分,该部分未发送到服务器,因此无法用于重定向到OAuth2服务器身份验证页面。

您有2个(也许3个)解决方案:

  • 停止在该地点使用哈希,并切换到HTML5历史记录; 通过“ History级别的gwt-pushstate自定义的PlaceHistoryHandler.Historian如果您使用Places API)。 但这限制了您的听众: http : //caniuse.com/history

  • 停止使用HTTP重定向,而使用JavaScript,这样您就可以将哈希值放入OAuth2 redirect_uri 因此,不要重定向,而是发送带有相应脚本位的错误页面

  • 某些浏览器在重定向后将哈希附加到URL,因此您的OAuth2服务器可能能够(在JavaScript中)选择哈希并将其附加到redirect_uri 这可能取决于用于重定向的HTTP状态代码(根据经验,它可与301一起使用,但您不希望在这里使用301)。 需要测试。

您可以使用GWT 活动和场所进行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM