这有点令人费解,但是我使用apache 2.4作为网络服务器来托管angularjs 1.6应用程序并将代理反向转换到我的nodejs后端。 apache网络服务器从另一个来源接收有关用户的信息,我将其传递到后端。我已经设法保护/admin
页面的如果用户来自/
-> /admin
,但是如果用户直接访问/admin
,则此功能无效。这是因为我会在用户访问/
时存储有关用户的信息。当他们直接查看/admin
时,我认为我必须向后端发出请求以了解它是谁(GET /whois
),但我不知道如何解决此问题。诺言。这甚至有可能实现吗?
以下是我正在运行的内容的摘要:
backend.js:
Class User{
constructor(username,is_admin){
this.username = username;
this.is_admin = is_admin;
}
}
app.get("/whois", function(req,res){
const user = new User(req.username, req.is_admin);
res.send(user);
});
frontend.js
services.factory("AS", function($q){
return {
auth_me : function(){
//TODO: $http.get("/whois")
let isAuthenticated = this.localStorage["is_admin"];
if (isAuthenticated){
return true;
}
else{
return $q.reject("unauthorized");
}
}
}
}
myangApp.config(function($routeProvider){
$routeProvider.when("/admin",{
templateUrl : "pages/admin_page.html",
resolve : {
"auth" : function(AS){
return AS.auth_me();
}
}
});
});