AngularJs HTTP 응답 차단기 로그 인,권한 검사
차단기 가 뭐 예요?
$http Provider 에는 interceptors 배열 이 있 습 니 다.차단기 라 는 것 은 이 배열 의 일반적인 서비스 공장 에 간단하게 등 록 된 것 입 니 다.다음 예 는 차단 기 를 만 드 는 방법 을 알려 줍 니 다.
<!-- lang: js -->
module.factory('myInterceptor', ['$log', function($log) {
$log.debug('$log is here to show you that this is a regular factory with injection');
var myInterceptor = {
....
....
....
};
return myInterceptor;
}]);
그리고 그 이름 을 통 해$http Provider.interceptors 배열 에 추가 합 니 다:
<!-- lang: js -->
module.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('myInterceptor');
}]);
차단기 허용:
angular.module("myApp", [])
.factory('httpInterceptor', [ '$q', '$injector',function($q, $injector) {
var httpInterceptor = {
'responseError' : function(response) {
......
return $q.reject(response);
},
'response' : function(response) {
......
return response;
},
'request' : function(config) {
......
return config;
},
'requestError' : function(config){
......
return $q.reject(config);
}
}
return httpInterceptor;
}
따라서 로그 인과 권한 문 제 를 차단 기 를 통 해 판단 할 수 있 습 니 다.코드 에 있 는$rootScope.user 는 로그 인 후 사용자 정 보 를 전역 rootScope 에 올 려 다른 곳 에서 사용 하기에 편리 합 니 다.$rootScope.default Page 도 기본 홈 페이지 입 니 다.초기 화 할 때 rootScope 에 쓰 여 죽 었 습 니 다.
$rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){
if(toState.name=='login')return;//
//
if(!$rootScope.user || !$rootScope.user.token){
event.preventDefault();//
$state.go("login",{from:fromState.name,w:'notLogin'});//
}
});
또한 사용자 가 이미 로그 인 했 지만 로그 인 시간 이 초과 되 었 고 배경 인터페이스의 판단 을 증가 시 켜 안전성 을 강화 했다.로 컬 논리 에 완전히 의존 할 수 는 없다.저 희 는 model 에 사용자 차단 기 를 추가 하여 rensponseError 에서 오류 코드 를 판단 하고 이 벤트 를 던 져 서 Contoller 나 view 로 처리 합 니 다.
app.factory('UserInterceptor', ["$q","$rootScope",function ($q,$rootScope) {
return {
request:function(config){
config.headers["TOKEN"] = $rootScope.user.token;
return config;
},
responseError: function (response) {
var data = response.data;
// ,
if(data["errorCode"] == "500999"){
// token ,
$rootScope.user = {token:""};
// , view ,
$rootScope.$emit("userIntercepted","notLogin",response);
}
//
if(data["errorCode"] == "500998"){
$rootScope.$emit("userIntercepted","sessionOut",response);
}
return $q.reject(response);
}
};
}]);
angularjs config 에 차단 기 를 등록 하 는 것 을 잊 지 마 세 요.
app.config(function ($httpProvider) {
$httpProvider.interceptors.push('UserInterceptor');
});
마지막 으로 controller 에서 오류 사건 을 처리 합 니 다.
$rootScope.$on('userIntercepted',function(errorType){
// , from,
$state.go("login",{from:$state.current.name,w:errorType});
});
마지막 으로 loginController 에서 더 많은 디 테 일 처 리 를 할 수 있 습 니 다.
// , ,
if($rootScope.user.token){
$state.go($rootScope.defaultPage);
return;
}
또한 로그 인 에 성공 한 후 이전 화면 으로 이동 할 수 있 습 니 다.즉,위 에 기 록 된 from 입 니 다.
var from = $stateParams["from"];
$state.go(from && from != "login" ? from : $rootScope.defaultPage);
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SpringMvc+Angularjs 멀티 파일 대량 업로드SpringMvc 코드 jar 가방 commons-fileupload commons-io spring-mvc.xml 구성 Controller 로컬 저장 AngularJs 코드 Form 양식 커밋 위에서 말한 것은 여...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.