9

我正在尝试这个git 示例

当我将它与我的项目集成时效果很好,但我想要实现的是发送json作为对客户端/请求的响应,而不是successRedirect:'/profile'和failureRedirect:'/signup'。

是否可以发送 json,或者是否有其他方法可以得到相同的结果?

任何帮助将不胜感激,TU

4

6 回答 6

8

在这里我修改了我的代码以发送 json 作为响应

// process the signup form
app.post('/signup', passport.authenticate('local-signup', {
    successRedirect : '/successjson', // redirect to the secure profile section
    failureRedirect : '/failurejson', // redirect back to the signup page if there is an error
    failureFlash : true // allow flash messages
}));

app.get('/successjson', function(req, res) {
    res.sendfile('public/index.htm');
});

app.get('/failurejson', function(req, res) {
    res.json({ message: 'hello' });
});
于 2014-06-24T10:03:35.433 回答
6

您可以在 express 应用程序中使用护照的身份验证功能作为路由中间件。

app.post('/login',
  passport.authenticate('local'),
  function(req, res) {
    // If this function gets called, authentication was successful.
    // `req.user` contains the authenticated user.
    // Then you can send your json as response.
    res.json({message:"Success", username: req.user.username});
  });

默认情况下,如果身份验证失败,Passport 将响应 401 Unauthorized 状态,并且不会调用任何其他路由处理程序。如果身份验证成功,将调用下一个处理程序并将req.user属性设置为经过身份验证的用户。

于 2016-01-30T19:41:15.687 回答
4

创建新路线,例如:/jsonSendwith res.jsonin it 和 make successRedirect: '/jsonSend'。那应该这样做。

于 2014-06-24T09:40:30.193 回答
3

有一个官方的自定义回调文档:

app.get('/login', function(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    if (err) { return next(err); }
    if (!user) { return res.redirect('/login'); }
    req.logIn(user, function(err) {
      if (err) { return next(err); }
      return res.redirect('/users/' + user.username);
    });
  })(req, res, next);
});

https://github.com/passport/www.passportjs.org/blob/master/views/docs/authenticate.md

于 2017-10-29T12:55:55.733 回答
1

使用护照作为中间件。

router.get('/auth/callback', passport.authenticate('facebook'), 
    function(req, res){
        if (req.user) { res.send(req.user); }
        else { res.send(401); }
    });
于 2016-01-12T02:44:33.187 回答
-3
// process the signup form
app.post('/signup', passport.authenticate('local-signup', {
    successRedirect : '/successjson', // redirect to the secure profile section
    failureRedirect : '/failurejson', // redirect back to the signup page if there is an error
    failureFlash : true // allow flash messages
}));

app.get('/successjson', function(req, res) {
    res.sendfile('public/index.htm');
});

app.get('/failurejson', function(req, res) {
    res.json({ message: 'hello' });
});
于 2017-08-02T10:30:16.353 回答