Php 如何使用Parse在REST体系结构上实现身份验证

Php 如何使用Parse在REST体系结构上实现身份验证,php,parse-platform,jwt,Php,Parse Platform,Jwt,我目前正在重做一个使用PHP Parse SDK的遗留web应用程序,我在登录验证部分。在旧的应用程序中,我们在执行ParseUser::signIn()和ParseUser::currentUser()时使用$\u SESSION和ParseToken来检查您是否有一个具有有效令牌的会话,但是新的应用程序是使用REST体系结构创建的,其中一个REST概念是服务器不能保持状态,即,是无状态的,在这种情况下,必须由客户端发送必要的数据 在搜索internet和论坛时,我发现开发人员通常使用JWT进

我目前正在重做一个使用PHP Parse SDK的遗留web应用程序,我在登录验证部分。在旧的应用程序中,我们在执行
ParseUser::signIn()
ParseUser::currentUser()
时使用$\u SESSION和ParseToken来检查您是否有一个具有有效令牌的会话,但是新的应用程序是使用REST体系结构创建的,其中一个REST概念是服务器不能保持状态,即,是无状态的,在这种情况下,必须由客户端发送必要的数据

在搜索internet和论坛时,我发现开发人员通常使用JWT进行身份验证,客户端会请求服务器的路由,服务器会返回一个令牌,并通过该令牌进行身份验证

我甚至使用
Firebase/jwt-php
实现了一些东西,其中客户端[邮递员]通过body[
username
password
]发送请求,请求路由
/login
,如果成功,返回用于安全路由请求的令牌

注意:代码尽可能简单,没有验证和清理,只是为了显示示例

操作
/login


$username = $request->getParsedBody()['username'];
$password = $request->getParsedBody()['password'];

$userAuthenticated = ParseUser::logIn($username, $password);

$payload = [
    'data' => $userAuthenticated,
    'exp'  => time() + 3600
];

$token = JWT::encode($payload, $_ENV['JWT_SECRET_KEY']);

echo json_encode(['token' => $token]);

受保护的路由有一个
中间件
,该中间件检查
时间是否已过期
,如果已过期,将启动401代码异常

到目前为止,身份验证是有效的,问题是我不知道这样做是否正确,因为我需要给出一个
ParseUser::logIn()
,只是为了在数据库中生成一个会话,我甚至没有在这个会话中使用它来做一些身份验证,银行中的操作除外,因为从我在文档中看到的情况来看,如果数据库中没有有效的会话,应用程序将返回
无效会话令牌错误
,并且在请求另一个路由时
ParseUser::currentUser()
返回空值,这可能是将来的问题


有人知道我如何为用PHP制作的REST应用程序实现身份验证吗?谢谢你的帮助

我认为最简单的方法就是将默认会话存储(使用$\u session)替换为其他存储会话的存储,例如Redis。参考:

但你的做法也应该奏效。您只需确保,每次请求到来时,您都将解码JWT,从那里获取解析会话令牌,并使用
ParseUser::been
设置当前用户: