지금 당장 Ruby on Rails 위에 AngulesJS 기반 응용 프로그램을 만들고 인증을 위해 Devise를 사용하고 있습니다. 나는 사용자가 성공적으로 인증을 받았을 때와 인증이 실패 할 때 서버가 적절하게 응답하도록했습니다. 제 질문은 $ cookieStore를 사용하여 사용자가 로그인했는지 여부를 알 수있는 가장 좋은 방법이라고 생각하십니까? Rails가 "myapp_session"이라고 설정 한 쿠키가 있지만 세션이 반드시 사용자가 로그인했다는 것을 의미하지는 않습니다. AngularJS를 사용하여 사용자 온라인/오프라인 관리를 유지하는 방법에 대한 아이디어를 찾고 있습니다. 나는 여전히 인증을 요구하는 요청이 솔루션과 상관없이 백엔드에 의해 승인되도록 보장 할 것입니다.cookieStore 및 AngularJS를 사용하여 사용자가 로그인 또는 로그 아웃하는 가장 좋은 방법
22
A
답변
37
응용 프로그램이로드 될 때 기록 된 사용자를 설정하는 지시문을 만들 수 있습니다 (예 : 서버의 현재 사용자 세션 요청).
angular.module('Auth', [
'ngCookies'
])
.factory('Auth', ['$cookieStore', function ($cookieStore) {
var _user = {};
return {
user : _user,
set: function (_user) {
// you can retrive a user setted from another page, like login sucessful page.
existing_cookie_user = $cookieStore.get('current.user');
_user = _user || existing_cookie_user;
$cookieStore.put('current.user', _user);
},
remove: function() {
$cookieStore.remove('current.user', _user);
}
};
}])
;
그리고 당신의
run
방법에 설정
AppController
에 :
.run(['Auth', 'UserRestService', function run(Auth, UserRestService) {
var _user = UserRestService.requestCurrentUser();
Auth.set(_user);
}])
물론 서버에 대한 요청이 Http Status 401 - Unauthorized
을 반환하는 경우, 당신은 쿠키에서 사용자를 제거하고 리디렉션 할 Auth.remove()
서비스를 호출 할 필요가 사용자 로그인 페이지.
나는이 접근 방식을 사용하며 매우 잘 작동합니다. localStorage
을 사용할 수도 있지만 사용자 데이터는 오랫동안 지속됩니다. 이 인증의 만료 날짜를 설정하지 않으면 모범 사례로 보이지 않습니다.
는
[편집]
가이 401 - Unauthorized
서버 응답을 들으려면 당신이 당신의 $http
요청 인터셉터를 넣을 수 있습니다처럼) = 서버 사이트에 사용자 자격 증명을 확인 항상에 유의하십시오 이 :
401
응답 모든 호출, 사용자가
/login
연평균 로그인 페이지로 리디렉션됩니다
.config(['$urlRouterProvider', '$routeProvider', '$locationProvider', '$httpProvider', function ($urlRouterProvider, $routeProvider, $locationProvider, $httpProvider) {
$urlRouterProvider.otherwise('/home');
var interceptor = ['$location', '$q', function ($location, $q) {
function success(response) {
return response;
}
function error(response) {
if (response.status === 401) {
$location.path('/login');
return $q.reject(response);
}
else {
return $q.reject(response);
}
}
return function (promise) {
return promise.then(success, error);
};
}];
$httpProvider.responseInterceptors.push(interceptor);
}])
th.
당신은 그들이이
.run(function($cookieStore) {
if ($cookieStore.get('logged-in') === some_value) {
let him enter
}
else {
you shall not pass
}
});
로 사이트를 입력하면 그 다음을 확인 당신은
$cookieStore.put('logged-in', some_value)
으로 로그인 콜백에 쿠키를 설정할 수 있습니다 here
4
좋은 예를 찾을 수 더 정확한 "방법일지도 모르지만, 이것은 작동합니다.
2
당신이 허용 대답 업무를하는 데 문제가 있다면, 각도 1.3으로, 새로운 인터셉터를 추가하는 적절한 방법은 $ httpProvider.interceptors에 추가하여 것을,주의, 그래서 대신 :
$httpProvider.responseInterceptors.push(interceptor);
사용 :
$httpProvider.interceptors.push(interceptor);
관련 문제
- 1. AngularJS를 사용하여 Google 계정에서 로그 아웃하는 방법
- 2. 달력에 로그인 로그 아웃하는 방법
- 3. codeigniter에서 로그 아웃하는 가장 좋은 방법은 무엇입니까?
- 4. ASP.Net에서 로그인 및 로그 아웃하는 보안 방법
- 5. Windows에서 로그인 및 로그 아웃하는 방법 xp
- 6. OAuth 2.0 API를 사용하여 사용자를 로그 아웃하는 가장 좋은 방법
- 7. 로그인 후 로그 아웃하는 방법
- 8. 휴식 클라이언트 (시간 기준)에서 로그 아웃하는 가장 좋은 방법
- 9. iOS의 vimeo에서 로그 아웃하는 방법
- 10. 사용자가 로그 오프했는지 확인하는 가장 좋은 방법
- 11. OAuth 2.0을 사용하여 로그 아웃하는 방법
- 12. phonegap 및 JQM에서 로그인 및 로그 아웃하는 방법
- 13. joomla에서 로그인 한 URL에서 로그 아웃하는 방법
- 14. 로그 아웃하는 방법
- 15. 특정 사용자 세션 (php 및 mysql)을 로그 아웃하는 방법
- 16. 트위터에서 로그 아웃하는 방법
- 17. IOS 앱에서 로그 아웃하는 가장 좋은 방법은 무엇입니까?
- 18. TortoiseGit : 로그 아웃하는 방법?
- 19. 앱 승인 후 사용자가 자동으로 로그 아웃하는 방법
- 20. web2py 사용자를 로그 아웃하는 방법
- 21. 세션 및 쿠키에서 로그 아웃하는 방법
- 22. 시간 초과 이벤트에서 사용자를 로그 아웃하는 방법
- 23. 로그 아웃하는 방법
- 24. Net :: SFTP를 사용하여 로그 아웃하는 방법
- 25. Xcode의 DevPortal에서 로그 아웃하는 방법
- 26. Facebook에서 로그 아웃하는 문제
- 27. Symfony2에서 사용자를 로그 아웃하는 방법
- 28. 사용자가 simpleSAMLphp에서 로그 아웃하는 올바른 방법은 무엇입니까?
- 29. WSO2 : 'rememberMeCookie'를 얻은 사용자를 로그 아웃하는 방법
- 30. agsXMPP 라이브러리를 사용하여 JID를 로그 아웃하는 방법
이 환상적인 반응이다. 통찰력에 감사드립니다. 유용했습니다. –
'Unknown provider : $ urlRouterProvider'에 대한 오류가 있습니다. –
각도 버전 1.2를 사용하고 있습니까? –