Sails.JS在重定向时找不到路由

时间:2017-06-02 00:15:55

标签: javascript sails.js

我尝试正确实现登录过程,我使用服务器渲染视图approch作为前端。根据sails.js官方文档中关于设置路由的内容,所以在我的routes.js中,我有这个:

module.exports.routes = {

  '/': {
    view: 'login'
  },
  // Server render HTML views

  'POST /signup':'UserController.signup',
  'PUT /login': 'UserController.login', 
  'GET /logout':'UserController.logout',
  'GET /profile': 'PageController.showProfilePage', 
  'GET /dashboard': 'PageController.showDashboardPage', 
  'GET /products': 'PageController.showProductPage'

  };

通常仪表板路线存在,所以我想要做的就是当我登录时,我会自动重定向到仪表板。 所以在我的UserController.js中,我有这个:

  login : function (req, res){
    //... some code here
            success : function (){
                if(userFound.deleted){
                    return res.forbidden("'Your account has been deleted. 
  Please visit ecommerce.com/restore to restore your account'"); 
                }
                if(userFound.banned){
                    return res.forbidden("'Your account has been banned 
  completly because you didn't respect the use term of our site"); 
                }
                // Store user id in a session
                req.session.userId = userFound.id; 
                console.log(req.session); 
                res.redirect('/dashboard'); 
                return; 
            }
        })
       })
       }

最后,我有了我的PageController,我根据用户是否经过身份验证显示了所有不同的Web应用程序视图,在这种情况下是仪表板。所以,这是我的代码所说的:

    showDashboardPage: function (req, res){
       if(!req.session.userId){
          console.log(req.session);
          return res.redirect('/')
       }
    if(req.session.userId){
        User.findOne(req.session.userId, function (err, user){
            if(err){
                console.log(req.session);
                return res.negotiate(err);
            }
            if(!user){
                console.log(req.session);
                sails.log.verbose('Session refers to a user who no longer exist'); 
                return res.redirect('/'); 
            }

            console.log(req.session);
            return res.view('user/dashboard', {
                layout: 'user/mainUserLayout',
                me: {
                    id: user.id, 
                    username: user.username, 
                    fullname: user.fullname,
                    profilePicture: user.profilePicture, 
                    admin: user.admin
                }
            }); 
        });
    }
}

当我登录时,我从服务器收到404未找到错误。我不知道我是否真的错过了什么。一些帮助将得到赞赏。 :)

2 个答案:

答案 0 :(得分:0)

如果您收到404,则您返回的视图可能不在您指定的路径上。查看浏览器中的控制台日志,并检查它找不到的资源。从这里开始,你应该很容易推断出这个问题。如果只是在您登录后,我的怀疑是您的一条路径对您的某个视图不正确。

答案 1 :(得分:0)

这是因为登录的请求方法。

'PUT /login': 'UserController.login', 

当您从登录操作执行res.redirect('/ dashboard')时,它将是/dashboard上的PUT,由于PUT /仪表板没有路由,因此会产生404