gpt4 book ai didi

signing - KeystoneJS 登录

转载 作者:行者123 更新时间:2023-12-01 15:01:27 27 4
gpt4 key购买 nike

我正在创建一个 keystone 项目,我需要提供允许或不允许用户使用 keystone 登录进行访问的权限。但是,我发现 keystoneJS 发送带有电子邮件、密码和 csrf 的表单数据。当用户访问登录页面时,会将这个 csrf 提供给用户。

尽管如此,我需要做的是使用 API 与外部通信以登录用户。如何生成_csrf?还有另一种方法可以生成两个请求吗?

谢谢

最佳答案

@Sericaia,您没有包含任何有关如何实现登录页面的代码或细节,因此我的答案会有点模糊。

Keystone 有一个内部 API,用于处理 CSRF token 创建和验证。我认为它没有被记录下来,但这里是它如何工作的要点。

在路由处理程序中,您可以创建一个 CSRF token 键/值对,然后将其注入(inject)到 View 局部变量中,然后在 View 模板中使用。您可以像这样手动完成。

app.get('/login', function (req, res) {
var keystone = require('keystone');
var csrfTokenKey = keystone.security.csrf.TOKEN_KEY;
var csrfTokenValue = keystone.security.csrf.getToken(req, res);

res.render('login', {
csrfTokenKey: csrfTokenKey,
csrfTokenValue: csrfTokenValue
});
});

或者您可以使用提供的中间件。

// the middleware will automatically inject the CSRF token 
// into res.locals[keystone.security.csrf.LOCAL_KEY]
app.get('/login', keystone.security.csrf.middleware.init, function(req, res) {
...
});

您还可以验证从客户端收到的 CSRF token 。您可以手动执行以下操作:

app.post('/login', function(req, res) {
if (keystone.security.csrf.validate(req)) {
// CSRF is valid
...
} else {
// CSRF is not valid
...
}

});

或者您可以使用提供的中间件。

// the middleware will return 403 status with "CSRF token mismatch"
// of there's a error validating the CSRF token received
app.post('/login', keystone.security.csrf.middleware.validate, function(req, res) {
...
});

希望这有帮助。

关于signing - KeystoneJS 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29240757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com