我有一个使用AngularJS的SPA。我刚刚添加了安全性/身份验证,并且如果returnUrl
查询字符串中存在登录后的重定向,那么一切似乎都可以正常工作。
我的应用程序中有代码,如果没有通过身份验证的用户将重定向到我的登录路径。例如,如果用户尝试访问http://localhost:55841/#/group/15
(需要身份验证),它将使用以下URL重定向到登录路由:
http://localhost:55841/#/login?returnUrl=%2Fgroup%2F15
这是我的登录方法,如果成功登录后存在,则应重定向到returnUrl路由:
var login = function (credentials) {
return $http.post(baseUrl + 'api/login', credentials).then(function (response) {
//do stuff
var returnUrl = $location.search().returnUrl;
if (returnUrl) {
$location.path(returnUrl);
//$location.path('/group/15');
}
$location.path('/');
});
};
当我调试登录方法时,returnUrl的值/group/15
就是我期望的值,但是它导航到以下URL:
http://localhost:55841/#/?returnUrl=%2Fgroup%2F15
提前致谢
var login = function (credentials) {
return $http.post(baseUrl + 'api/login', credentials).then(function (response) {
$rootScope.currentUser = response.data;
$rootScope.$broadcast('currentUser', response.data);
var returnUrl = $location.search().returnUrl;
if (returnUrl) {
console.log('Redirect to:' + returnUrl);
$location.path(decodeURI(returnUrl)); // <- executed first, but not redirect directly.
//$location.path('/group/15');
} else { //else :)
console.log('Redirect returnUrl not found. Directing to "/".');
$location.path('/'); // <- only redirect if no returnUrl isset/true
}
}, function (response) {
$rootScope.currentUser = null;
$rootScope.$broadcast('currentUser', null);
return $q.reject(response);
});
};
提示:您需要在“ returnUrl”中过滤大量URL。考虑一下最后一页是的情况/
。因此,它是一个无休止的循环。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句