AngularJS $ location.path()不适用于returnUrl

im1dermike

我有一个使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS $ location.path()不适用于returnUrl

来自分类Dev

AngularJS $ location不适用于google.maps.event侦听器

来自分类Dev

Tinymce textarea不适用于AngularJS

来自分类Dev

AngularJS代码不适用于NodeJS

来自分类Dev

jQuery悬停不适用于AngularJS

来自分类Dev

AngularJS模板不适用于Spring

来自分类Dev

路由不适用于AngularJS

来自分类Dev

AngularJS $ stateProvider不适用于组件

来自分类Dev

window.location.href不适用于url方案

来自分类Dev

AngularJS和location.path()

来自分类Dev

AngularJS $ location.path问题

来自分类Dev

AngularJS表单验证不适用于指令

来自分类Dev

icheck复选框不适用于angularjs

来自分类Dev

AngularJS:单选按钮不适用于Bootstrap 3

来自分类Dev

AngularJS必需的属性不适用于选择

来自分类Dev

AngularJS Scope Apply不适用于单击

来自分类Dev

AngularJS ng-disabled不适用于列表项

来自分类Dev

AngularJS remove()方法不适用于IE11

来自分类Dev

AngularJS ng-show不适用于Viewbag

来自分类Dev

动态创建的元素内的指令不适用于angularjs

来自分类Dev

AngularJs双向绑定不适用于Jquery插件

来自分类Dev

Materializecss下拉菜单不适用于AngularJS

来自分类Dev

ng-click不适用于AngularJS和dataTables

来自分类Dev

jQuery单击事件不适用于AngularJS

来自分类Dev

AngularJS活动状态不适用于单击的按钮

来自分类Dev

AngularJS路由不适用于基本href

来自分类Dev

AngularJS指令不适用于jQuery UI

来自分类Dev

angularjs指令不适用于动态内容

来自分类Dev

数据绑定不适用于AngularJS中的JSON