2017-06-02 271 views
0

我尝试正确实现登录过程,我正在使用前端的服务器渲染视图批准。基于什么sails.js官方文件说,有关设置的路线,所以在我routes.js,我有这个:Sails.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' 

    }; 

正常情况下,仪表板路由存在所以我想做的事情是,当我登录,我m会自动重定向到仪表板。 所以在我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未找到服务器错误。我不知道我是否真的错过了一些东西。一些帮助将非常感激。 :)

回答

0

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

0

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

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

当您从登录动作做res.redirect(“/仪表盘”),这将是一个/dashboard PUT导致404,因为对于PUT /仪表板

没有路由