브로드 캐스트시 라우팅을 수행하고 라우팅을 통해 $ rootScope. $의 매개 변수를 컨트롤러에 전달해야합니다.
$rootScope.$on('unauthorized_access', function (event, args) {
$location.path('/login:' + args.msg);
});
이제는 효과가 있습니다.
$routeProvider
.when('/', {
templateUrl: 'mainApp/landingPage/login.html'
})
.when('/login::msg', {
templateUrl: function(params) {
if (params) {
// The params can be printed in console from here...
console.log(params);
}
return 'mainApp/landingPage/login.html';
},
controller: 'loginController'
})
.otherwise({
redirectTo: '/'
});
이제까지는 괜찮아 보입니다. 하지만 loginController에 매개 변수를 전달해야합니다. 나는 시도했다,
.when('/login::msg', {
templateUrl: function(params) {
if (params) {
console.log(params);
}
return 'mainApp/landingPage/login.html';
},
controller: 'loginController',
pageParams : params
})
그러나 나는 그것을 잘못하고 있다고 생각한다. 도와주세요. 어떤 도움을 주시면 감사하겠습니다. 고맙습니다.
편집 : 시나리오를 추가합니다. 고정 된 시간 후에 '토큰'이 유효하지 않게되고 사용자가 로그인 화면으로 리디렉션되면 모든 화면에서 login-string에 메시지 문자열을 전달해야합니다. 이제 사용자가 처음 도착하면 표시 할 메시지가 없습니다. 는 따라서, 이것은 내가 방송 메시지를 전달하는 방법이다
$rootScope.$broadcast('unauthorized_access', param);
http 인터셉터를 사용하여 세션 일관성을 관찰하는 것이 좋습니다. 401 오류가 발생하면 세션을 종료하고 사용자를 로그인 페이지 – Foker
으로 리디렉션 할 수 있습니다. 그게 내가하고있는 일입니다. 그러나 나는 또한 메시지를 전달해야합니다. 그래서 나는 브로드 캐스트를 통해 그 메시지 (리디렉션을 야기한)를 넣었습니다. 이것은 401 오류로 리디렉션하는 서비스입니다. service.responseError = function (resp) { var param = {}; if (resp.error == 401) { param.msg = "토큰 만료 됨"; } $ rootScope. $ broadcast ('unauthorized_access', param); return resp; }; –
다음 해답을 찾으십시오. – Foker