나는 뭔가를 이해하지 못하거나 내가 생각하는 것을 놓치고 있습니다. 나는 내가 스칼라/사용자 및 비밀번호가 확인 응용 프로그램 재생이 그래서 지금은 로그인 서비스 모두에서 잘 수있는 문제를 백엔드로 사용자 (즉, AngularJS와 1.5의) 권한을 부여하는 LoginPage이머리글에 Angularjs 토큰이 없습니다.
var token = $cookies["XSRF-TOKEN"];
if (token) {
$http.get('http://localhost:9000/ping')
.then(
function (response) {
return $http.get("http://localhost:9000/users/" + response.data.userId)
}, function (response) {
token = undefined;
$cookies["XSRF-TOKEN"] = undefined;
return $q.reject("Token invalid");
}
).then(
function (response) {
console.log(response.data);
}, function (response) {
console.log("error");
}
);
}
$http.post('http://localhost:9000/login', user)
.then(function (response) {
token = response.data.authToken;
console.log(token);
var userId = response.data.userId;
return $http.get('http://localhost:9000/users/' + userId)
}, function (response) {
console.log(response.data.err);
// return 'empty' promise so the right `then` function is called
return $q.reject("Login failed");
}).then(
function (response) {
console.log(response);
}
)
}
로 괜찮 그러나 다음의 경우 I는 API에 GET 요청을 전송하고 XSRF 쿠키를 확인하고자하지만 쿠키가 전송되지 않습니다. 스칼라의 보안 형질 여기
입니다 - 그래서 지금
def HasToken[A](p: BodyParser[A] = parse.anyContent)(f: String => Long => Request[A] => Result): Action[A] =
Action(p) { implicit request =>
val maybeToken = request.headers.get(AuthTokenHeader).orElse(request.getQueryString(AuthTokenUrlKey))
maybeToken flatMap { token =>
cache.get[Long](token) map { userid =>
f(token)(userid)(request)
}
} getOrElse Unauthorized(Json.obj("err" -> "No Token"))
}
내 질문입니다 - 머리글 토큰 어디에 있습니까? 업데이트
: 여기 내 app.js는
'use strict';
function testInterceptor($rootScope, $q, $timeout) {
return function(promise) {
return promise.then(
function(response) {
return response;
},
function(response) {
if (response.status == 401) {
$rootScope.$broadcast("InvalidToken");
$rootScope.sessionExpired = true;
$timeout(function() {$rootScope.sessionExpired = false;}, 5000);
} else if (response.status == 403) {
$rootScope.$broadcast("InsufficientPrivileges");
} else {
// Here you could handle other status codes, e.g. retry a 404
}
return $q.reject(response);
}
);
};
}
var app=angular.module('telephone', ['ngRoute', 'ngCookies']);
app.factory('testInterceptor', testInterceptor);
app.config(["$httpProvider", "$routeProvider",function ($httpProvider, $routeProvider) {
$httpProvider.interceptors.push('testInterceptor');
$routeProvider.when('/login', {templateUrl: '../partials/login.html', controller: 'loginController'});
$routeProvider.otherwise({redirectTo: '/login'});
}]);
처럼 추가 할 수 있도록 각 응용 프로그램 옆 요청에 대한 기본 헤더에 토큰을 추가 할 필요가 있다고 생각입니다 localhost 도메인에서 실행 중이거나 브라우저에서 어떻게 액세스합니까? 그들이 일치해야하기 때문에, otherwiser angle/javascript는 쿠키를 볼 수 없습니다. – Zyga
localhost (angularjs localhost : 8000, scala Backend localhost : 9000)에서 실행 중임 – tbere