![](/img/trans.png)
[英]ExpressJS and Angular - 'leaving' the app to do server-side authentication
[英]Angularjs, Expressjs and passportjs for authentication checks on server side
我有一个Node.js应用程序,我在其中使用了Yeoman脚手架进行Angular操作。 我也在服务器端使用ExpressJS。
所以基本上我的应用程序结构是:
app
-->views
--> more files
server.js
该结构比这更重,但这是为了使其简单。
基本上,我已经在服务器端使用PassportJS进行身份验证。 目前,路由是通过AngularJS路由参数执行的。
我现在遇到一个问题,因为我需要使用中间件方法进行身份验证:
function ensureAuthenticated(req, res, next) {
console.log('authenticate=' + req.isAuthenticated());
if (req.isAuthenticated()) {
return next();
}
res.redirect('/')
}
我在服务器端创建了一个app.get
,以检查用户是否尝试不登录而进入管理页面:
app.get('/admin', ensureAuthenticated,
function(req, res){
console.log('get admin' + req.params);
res.sendfile(__dirname + '/app/views/admin/users.html');
});
但是它永远不会用到方法上。 我究竟做错了什么?
任何建议都很好。
if (!req.isAuthenticated()) {
return res.send(401, 'User is not authorized');
}
next();
它不起作用的原因是因为在客户端上配置路由时,angularjs locationprovider未设置为htmlmode5。 添加了以下行:
$locationProvider.html5Mode(true);
基本上,这会从网址中删除“#”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.