rekkyrek / rekauth
基于令牌的开源身份验证系统
Requires
- php: ^5.1.0 || ^7.0
- rekkyrek/rekauth: 1.*
This package is not auto-updated.
Last update: 2022-01-08 04:42:36 UTC
README
PHP的开源基于令牌的身份验证系统
##下载
方法1(手动):下载zip文件并将其解压缩到您的项目中。
方法2(Composer):
composer require rekkyrek/rekauth
设置
####首先,您需要为rekauth表创建一个数据库。
- 创建一个新的数据库以存储rekauth
create database <Database Name Here>;
- 然后切换到您的新数据库
use <Database Name Here>;
-
太好了!现在我们需要创建包含所有数据的表。在此阶段,您需要决定用户名可以有多长。
-
完成了吗?好的,让我们创建表!我想让您将以下内容复制并粘贴到您的数据库终端中,并编辑userid的varchar值(标记为*的地方需要编辑)。好吗?
create table users (userid varchar(*), passhash varchar(255), mail varchar(255), lastseen timestamp, registered timestamp)
- 现在添加一个;并按回车。现在将以下内容粘贴到控制台(并将*修改为上一个值。)
create table tokens (user varchar(*), expire timestamp, token varchar(265))
- 现在,再次添加一个;并按回车。完成了!太好了!(至少在数据库方面。)
####现在我们需要在PHP中设置身份验证系统。 注意:确保您的服务器至少运行PHP 5。
-
将rekauth文件夹复制到您的项目中。
-
在您的文本编辑器中打开rekauth文件夹中的config.php文件。
-
首先,我们需要编辑数据库设置。
$servername应该是您数据库的IP地址。 $username和$password需要是您的数据库登录凭证。 $dbname必须与我们在设置数据库时创建的相同。
-
现在,根据您的需求进行修改。它们的命名相当合理,所以我想您应该能理解。 注意:除非您知道自己在做什么,否则不要更改$password_encrypt_cost。
-
然后,就完成了!现在按照以下步骤查看如何使用rekauth。
##使用rekauth ####登录
如何实现rekauth/login? 简单,您只需有一个包含两个文本字段的表单,并将其通过 POST 发送到rekauth/login.php
######POST名称
用户名 = u
密码 = p
######示例
<form action="rekauth/login.php" method="POST">
用户名: <input name="n" type="text"/>
密码: <input name="p" type="password"/>
<input type="submit" value="登录"/>
</form>
如果登录成功,它将设置一个包含访问令牌的cookie(您可以使用此令牌来验证用户,而不是在您的应用程序中使用用户名和密码)。如果失败,它将返回在 rekauth/config.php 中创建的错误字符串。(如果您仅在应用程序中使用JS,可以在登录系统的第62行和第67行添加 'echo $token',然后使用localStorage保存令牌)
####注册
如何实现rekauth/register? 简单,您只需有一个包含两个文本字段的表单,并将其通过 POST 发送到rekauth/login.php
######POST名称
用户名 = u
密码 = p
密码确认 = pc
邮箱 = m
邮箱确认 = mc
######示例
<form action="rekauth/register.php" method="POST">
用户名: <input name="n" type="text"/>
密码: <input name="p" type="password"/>
确认密码: <input name="pc" type="password"/>
邮箱: <input name="m" type="email"/>
确认邮箱: <input name="mc" type="email"/>
<input type="submit" value="登录"/>
</form>
如果注册成功,它将把密码散列(密码散列函数)和所有其他用户详细信息保存到您的数据库中,然后重定向用户到您在 rekauth/config.php 中设置的登录页面,在那里他们可以登录以获取访问令牌。
####使用令牌
如果用户成功完成登录,他们将收到一个访问令牌(默认:存储在名为 'token' 的cookie中)。这应该用于在您的应用程序内部执行功能时验证用户,而不是使用用户名和密码。
######表名
'user':令牌分配到的用户名。
'expire':令牌将过期的时间戳。
'token':访问令牌。
######示例
$dbquery = $conn->prepare("SELECT * FROM tokens WHERE token = :token");
$dbquery->execute(array("token"=>$_COOKIE["token"]));
$result = $dbquery->fetchAll();
$myusername = strtolower($result[0]["user"]);
现在您可以使用 '$myusername'
从您的数据库中的其他表访问数据。
本软件按照“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是在合同、侵权或其他法律行为中产生的,无论这些责任是否与软件或其使用或任何其他交易有关。
© 2016 Hampus Lundqvist