当前位置: 首页 > 面试题库 >

您可以通过Passport进行身份验证而无需重定向吗?

巫健柏
2023-03-14
问题内容

我有以下工作代码可通过本地护照策略进行身份验证:

  app.post('/api/login', passport.authenticate('local-login', {
    successRedirect : '/api/login/success',
    failureRedirect : '/api/login/error',
    failureFlash : true
  }));
  app.get('/api/login/error', function(req, res) {
    res.send(401, {error: req.flash('loginMessage')});
  });
  app.get('/api/login/success', function(req, res) {
    res.send(200, {user: req.user});
  });

但是,理想情况下,我想从一条快速路径处理错误和成功消息,而不是重定向到两条额外的路径。

这可能吗?我尝试使用“自定义回调”,但由于某种原因似乎在序列化用户时出错。


问题答案:

您可以使用自定义回调,例如:

passport.authenticate('local', function (err, account) {
    req.logIn(account, function() {
        res.status(err ? 500 : 200).send(err ? err : account);
    });
})(this.req, this.res, this.next);

在err对象中,您可以找到所有必需的错误,这些错误在身份验证时出现。



 类似资料:
  • 我的管理员控制器扩展了控制器类,在那里我使用方法加载视图页面并传递保护。config/auth.php也通过添加管理员保护和提供程序进行了修改。在app/Actions/Fortify文件夹中,我添加了AttemptToAuthenticate和ReDirectIfTwoFactorAuthenticate类,并更改了命名空间。我的管理员控制器还扩展了Guard。用户的重定向中间件和管理员的重定向

  • 问题内容: 在我的应用程序中,我需要通过REST API对用户进行身份验证。因此,我有一个包含用户/密码字段的表单,提交后,我想直接进入“下一个”页面。显然,我不想通过AJAX提交表单,因为我不想重定向到API页面。但是,如果请求将由javascript处理,那么如何知道我的用户应该进行身份验证? 问题答案: 根据我对系统体系结构的了解,您目前看起来像以下内容: 您的问题与在REST API We

  • 我正在尝试通过Google Open Auth 2.0在我的MVC 3 Web应用程序中实现身份验证。我已经成功地形成了URL请求URL,它看起来像这样: https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/a

  • 问题: 我们有一个spring的基于MVC的RESTful API,它包含敏感信息。API应该是安全的,但是不希望在每个请求中发送用户的凭据(User/Pass组合)。根据REST指南(和内部业务需求),服务器必须保持无状态。API将由另一台服务器以混搭方式使用。 要求: > 客户端请求使用凭据(不受保护的URL);服务器返回一个安全令牌,该令牌包含足够的信息,供服务器验证未来的请求并保持无状态。

  • 问题内容: 我有一个Node.js程序,该程序使用root帐户连接到本地MySQL数据库(这不是生产设置)。这是创建连接的代码: 它可以与MySQL 5.7一起使用,但是由于安装了MySQL 8.0,因此在启动Node.js应用程序时出现此错误: 看来根帐户使用了一种新的密码哈希方法: …但是我不知道为什么Node.js无法连接到它。我已经更新了所有npm软件包,但这仍然是一个问题。 我想保留新的

  • 我创建了一个在下运行的应用程序。IdP发起的身份验证调用一个POST,该POST具有对强制约定。但是spring saml中的ConsumerURL位于下。我试图通过