Node.js Express res.render不使用角度布线

Node.js Express res.render不使用角度布线,node.js,authentication,express,angular-routing,Node.js,Authentication,Express,Angular Routing,我有一个基于node.js、express、angular(带路线)和mongo的web应用程序。身份验证通过Passport.js处理 我的角度视图通过http请求与服务器交互。假设我发送类型为的请求: $http.get('/api/getMyData').success(function(data) {})... 在服务器上,我有: app.get('/api/getMyData',function(req, res) { if(!req.user){ // if th

我有一个基于node.js、express、angular(带路线)和mongo的web应用程序。身份验证通过Passport.js处理

我的角度视图通过http请求与服务器交互。假设我发送类型为的请求:

$http.get('/api/getMyData').success(function(data) {})...
在服务器上,我有:

 app.get('/api/getMyData',function(req, res) {
    if(!req.user){
    // if the session expired
    res.render('login.ejs',{message:'Session expired. Please login again.'});
使用此代码,如果会话已过期,我希望用户被重定向到登录页面

现在,这不起作用,我没有被重定向到登录。即使我有
console.log(req.user)
producting
undefined
req.user==undefined
giving
true
,如果
中的
res.render
不起作用。如果我尝试使用
res.redirect('login')
我收到一个404错误,表示
/api/login
不存在

我真的迷路了,任何帮助都将不胜感激。

您的
$http.get()
正在从
res.render()
取回内容。 您可以通过添加
console.log(数据)看到这一点$http.get().success()中的code>
如果api出现错误,您需要向客户端添加一些逻辑来重定向

比如:

server.js

app.get('/api/getMyData', function(req, res) {
  if(!req.user) {
    res.status(401);
    return res.json({
      status: 'error',
      message: 'Unauthorized'
    });
  }
  return res.json({
    status: 'success',
    // Stuff
  });
}
棱角的

$http.get('/api/getMyData').success(function(data) {
  // Do something
}).error(function(data, status) {
  // Handle the error
});

注意:这是未经测试,但它会给你一个大致的想法。可能会有一个更优雅的解决方案。

我实现了一些类似于@Jordonias建议的东西。 我从服务器获取用户(
null
如果会话过期), 如果用户是
null
我使用
$window.location.href=“/login”
以注销用户。
感谢@Jordonias。欢迎使用更好的替代方案。

您不是指res.render吗?(您的标题)标题已编辑,谢谢。谢谢您的评论。我认为这可能是一个解决办法。假设我得到了一个状态为:error的json,那么我如何从angular重定向到login.ejs这样的登录页面,并显示一条特定的消息(我在原始帖子的if中想做的事情)?无论如何,我仍然不明白为什么res.render在这种情况下不起作用然后
$scope.$apply()