[英]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.