Javascript 如何更换卫星';s$authProvider.loginUrl是否在角度控制器内?

Javascript 如何更换卫星';s$authProvider.loginUrl是否在角度控制器内?,javascript,angularjs,satellizer,Javascript,Angularjs,Satellizer,以下是我的案例场景: 用户未登录,他们试图访问a/设置页面 我的设置控制器基于$auth.isAuthenticated()!=true表示他们没有登录,并将他们重定向到/login 用户填写他们的电子邮件和密码,然后点击提交 我想在第三步中做的是将它们重定向到/settings页面,而不是主页 我想我会改变这个变量: $authProvider.loginDirect='/' 问题是我无法在我的loginCtrl.js文件中包含$authProvider,而在我的控制台中不会出现“未知提供程序

以下是我的案例场景:

  • 用户未登录,他们试图访问a/设置页面
  • 我的设置控制器基于
    $auth.isAuthenticated()!=true
    表示他们没有登录,并将他们重定向到/login
  • 用户填写他们的电子邮件和密码,然后点击提交 我想在第三步中做的是将它们重定向到/settings页面,而不是主页

    我想我会改变这个变量:

    $authProvider.loginDirect='/'

    问题是我无法在我的
    loginCtrl.js
    文件中包含
    $authProvider
    ,而在我的控制台中不会出现“未知提供程序”错误:$injector/unpr?p0=换句话说,Angular在尝试包含它时无法识别
    $authProvider
    。下面是我的
    loginCtrl.js
    文件的外观:

    /* Everything is blowing up because I'm trying to include $authProvider */
    angular.module("PrayerChain")
        .controller("loginCtrl", ["$rootScope", "$scope", "$state", "$http", "$auth", "$authProvider", loginCtrl]);
    
    function loginCtrl($rootScope, $scope, $state, $http, $auth, $authProvider) {
        $authProvider.loginRedirect = '/settings';
        $scope.login = function () {
            $auth.login({ Email: $scope.email, Password: $scope.password })
            .then(function() {
    
            })
            .catch(function (response, status, headers) {
                console.log(response);
                $scope.error = JSON.parse(response.data);
            });
        };
    }
    
    是否可以在控制器中包含
    $authProvider
    ?如果没有,有什么替代方案可以改变人们在使用卫星导航器登录时重定向的位置


    谢谢。

    通常只能在配置时访问提供程序对象,而控制器是在运行时创建的。如果需要设置authProvider,请尝试执行以下操作:

    angular.module('PrayerChain').config(
        [           "$authProvider",
            function($authProvider) {
                $authProvider.loginRedirect = '/settings';
            }
        ]).controller("loginCtrl",
        // ...
    
    新版本(0.12.5)不再使用此设置。您需要在控制器内设置url

    $auth.login({ Email: $scope.email, Password: $scope.password })
        .then(function() { 
            $location.path('your-new-route');
        })
        .catch(function (response, status, headers) {
            console.log(response);
            $scope.error = JSON.parse(response.data);
        });
    

    我正打算这样做,发现在0.13.0版(可能更早?)中,您可以向
    login
    函数传递一个选项参数,如下所示:

    $auth
      .login(user, {
        url: config.api + '/authenticate/customer'
      })
    

    完美的奥斯汀。那切芥末。谢谢这里有一个简单的问题。我需要使用$stateParams从URL获取重定向,但在配置时不可用。卫星是如何期望你们能做到这一点的?这是一个很好的问题。我还不知道关于卫星的任何事情,但我会和你们一起搜索。谢谢!这是未缩小的卫星导航器库:卫星导航器有一个
    set
    和一个
    get
    方法,用于
    loginDirect
    变量,但我认为它在外部不可用。但我可能错了。。。关于Javascript,我还有很多需要学习的地方。如果我们不能弄清楚,我将在Github上发布新的一期,因为我必须相信我不是唯一需要这个的人……url在哪里?