【问题标题】:Is hapi-auth-bearer-token for API authentication only?hapi-auth-bearer-token 是否仅用于 API 身份验证?
【发布时间】:2019-09-19 09:03:52
【问题描述】:

我一直在阅读有关 hapi 的不记名令牌模块的文档,想知道它是否仅适用于 API 身份验证或也适用于通用 Web 应用程序身份验证。

文档中有一些内容不清楚。

1) 令牌从何而来? IOW,什么机制创建令牌?

2) 用户首先通过什么方式登录?

谢谢

【问题讨论】:

    标签: authentication hapijs bearer-token


    【解决方案1】:

    我一直在阅读有关 hapi 的不记名令牌模块的文档,想知道它是否仅适用于 API 身份验证或也适用于通用 Web 应用程序身份验证。

    承载认证用于授权 API 请求。

    1) 令牌从何而来? IOW,什么机制创建令牌?

    您需要自己生成和验证令牌。

    要生成、存储和验证令牌,您可以使用uuidbcryptjs(令牌发送给用户,哈希令牌保存在数据库中以供以后验证)。

    以下示例使用 TypeScript。

    import uuid from 'uuid';
    import bcrypt from 'bcryptjs';
    
    export interface GeneratedToken {
      token: string;
      hashedToken: string;
    }
    
    const generateToken = async function(): Promise<GeneratedToken> {
      return new Promise<GeneratedToken>((resolve, reject) => {
        let token = uuid.v4().replace(/-/g, '');
        bcrypt.genSalt(10, function(error, salt) {
          if (error) {
            reject(error);
          } else {
            bcrypt.hash(token, salt, function(error, hashedToken) {
              if (error) {
                reject(error);
              } else {
                resolve({
                  token: token,
                  hashedToken: hashedToken
                });
              }
            });
          }
        });
      });
    };
    
    const validateToken = function(token: string, hashedToken: string): Promise<boolean> {
      return new Promise<boolean>((resolve, reject) => {
        bcrypt.compare(token, hashedToken, function(error, result) {
          if (error) {
            reject(error);
          } else {
            resolve(result);
          }
        });
      });
    };
    

    2) 用户首先通过什么方式登录?

    您需要使用另一种身份验证方案,该方案可以像在数据库中存储散列密码并将其与发送到您的 API 路由的数据进行比较一样简单。用于令牌的相同哈希方案也可以正常工作。

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 2016-09-06
      • 2021-12-29
      • 1970-01-01
      • 2021-05-09
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多