如何在Angular控制器中更改Satellizer的$ authProvider.loginUrl?

Mar*_*lin 6 javascript angularjs satellizer

这是我的案例场景:

  1. 用户未登录,他们尝试访问/设置页面.
  2. 我的设置控制器根据$auth.isAuthenticated() != true他们未登录进行识别,并将其重定向到/ login
  3. 用户填写他们的电子邮件和密码并点击提交.

我会喜欢上这个第三步做的就是将其重定向到/设置页面,而不是主页.

我想我会改变这个变量:

$authProvider.loginRedirect = '/';

问题是,我可以不包括$authProvider在我的loginCtrl.js文件,而无需在我的控制台得到一个"未知供应商"的错误:https://docs.angularjs.org/error/?$喷油器/ unpr P0 =换句话说,角度不承认$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);
        });
    };
}
Run Code Online (Sandbox Code Playgroud)

是否$authProvider可能包含在控制器中?如果没有,那么在使用Satellizer登录时改变人们重定向的位置有什么替代解决方案?

谢谢.

Aus*_*ins 3

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

angular.module('PrayerChain').config(
    [           "$authProvider",
        function($authProvider) {
            $authProvider.loginRedirect = '/settings';
        }
    ]).controller("loginCtrl",
    // ...
Run Code Online (Sandbox Code Playgroud)