crazedsanity / authtoken
用于创建和操作认证/授权令牌的库,例如密码散列和API密钥。
v0.1.3
2016-11-07 20:52 UTC
Requires
- crazedsanity/database: ^0.4
- ircmaxell/password-compat: ^1.0
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年内无限用户