0

我正在使用 Google UserService 获取我的应用引擎 Angular 应用程序的登录和注销 URL,并尝试将重定向的路径作为查询参数传递。这是一个 Angular URL 的示例:

http://localhost:8080/#/dashboard

在 Java 中,我试图创建这样的 Url:

String logoutUrl = UserServiceFactory.getUserService().createLogoutURL(redirectPath);

redirectPath 是预期的查询参数字符串“#/dashboard”。

问题是使用包含的“#”生成的 URL 不起作用。它只是使用新的 URL 重定向到自身。下面是从 UserService 生成的 URL 的样例:

/_ah/logout?continue=%23%2Fdashboard

如果我只是将字符串“/”传递给端点,那么我会得到一个这样的 URL:

/_ah/logout?continue=%2F

这可以按预期工作并在根文档中加载我的 Angular 应用程序。我真的希望能够让我的 UserService URLS 按预期工作。有任何想法吗?

这是它从上面的 URL 重定向到的 URL:

http://localhost:8080/_ah/logout?continue=%23%2Fdashboard#/dashboard
4

1 回答 1

0

我找到了解决问题的方法。如果我发送完整的 URL 而不仅仅是资源路径,则 UserService 可以正常工作。我的 Angular 代码现在如下所示。该应用程序将获取登录 URL,然后在登录时重定向到请求的 URL。这实际上是在服务中,但我简化了 StackOverflow 的代码。

$http({
    url: '/rest/user/login_uri?redirectPath=' + encodeURIComponent($location.absUrl()),
    method: 'GET',
    contentType: "application/json"
}).success(function (data) {
    $window.location.href = data.uri;
}).catch(function (data) {
    //Handle failed request....
});

我希望这对未来的人有所帮助。

于 2015-11-06T17:07:14.900 回答