【问题标题】:Sails.JS cannot find a route when redirectingSails.JS 重定向时找不到路由
【发布时间】:2017-06-02 00:15:54
【问题描述】:

我尝试正确实现登录过程,我正在为前端使用服务器渲染视图方法。根据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 not found 错误。我不知道我是否真的错过了什么。一些帮助将不胜感激。 :)

【问题讨论】:

    标签: javascript sails.js


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-03-06
        • 1970-01-01
        • 1970-01-01
        • 2018-11-30
        • 2021-09-09
        • 2015-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多