crazedsanity/authtoken

用于创建和操作认证/授权令牌的库,例如密码散列和API密钥。

v0.1.3 2016-11-07 20:52 UTC

This package is not auto-updated.

Last update: 2024-09-20 21:22:14 UTC


README

此系统旨在处理认证或授权,或两者兼而有之。此系统的常见用途是存储用于更改密码的临时令牌:用户请求更改密码,然后他们收到一封包含一些奇怪复杂散列的链接的电子邮件。这就是处理创建令牌并将它们存储在数据库中,以及处理自动过期逻辑的系统。

令牌是用来做什么的?

想象一下,你有一个Web应用程序,并且涉及到认证。你将创建一个“简单”的系统,其中用户可以点击某物以生成“忘记密码”请求。由于你希望既友好又注重安全,你的系统将为用户提供一个包含链接的电子邮件,让他们点击。使用CS Auth Token,你可以创建一个

  • 仅适用于指定用户账户
  • 使用一次后过期
  • 在给定时间段后过期
  • 具有加密安全性

如何使用它?

我可以解释,但真的,直接展示会更简单

$x = new cs_authToken($db, $uidOfUser);
$hash = $x->create_token($email);

电子邮件可能看起来像这样

Hello {friendlyName},

To reset your password, please click this link:

http://www.cs.local/lost?hash={hash}?key={email}

处理验证的代码可能看起来像这样

$x = new cs_authToken($db);

$authData = $x->authenticate_token($hash, $key);

if($authData['result'] == true) {
	//authenticated! use 'stored_value' to help in resetting their password
	$myData = $authData['stored_value'];
}

过期可能性

目前,有几种方式可以使令牌过期

  • 最大使用次数(例如1次使用)
  • 特定的过期日期(例如从创建之日起15分钟)
  • 有限的使用次数和特定的过期日期(例如在接下来的15分钟内使用1次)
  • 没有特定的过期日期(令牌将永远不会自动删除)

这些令牌可以用于的一些事情(这只是些想法)

  • 令牌API调用
    • 直到令牌过期前的1000次使用
    • 30天到期
    • 在接下来的30天内最多使用1000次
  • 会话
    • 在需要再次登录之前有1000次页面浏览
    • 必须在特定日期之前过期
    • 在1000次页面浏览或特定日期之前(以先到者为准)
  • 许可(根据实现,需要某种东西来防止令牌被销毁)
    • 1年内的5个许可
    • 1年内无限用户
    • 5个用户,无过期
    • 1年内无限用户