我正在建立一个SPA,用户可以上传一些文件。前端使用AngularJS编写,而后端使用Laravel 5.7中的API。验证是通过jwt-auth
库实现的。
到目前为止,我已经为注册用户实现了此功能,每个用户在服务器上都有一个个人目录,他/她将文件上传到该目录中。注册用户和匿名用户之间的区别在于,匿名用户的文件将在一段时间后删除。
现在,我想对匿名/来宾用户执行相同操作(如果按按钮继续作为来宾)。因此,我首先在authContrroller.php端尝试使用的是这样的内容:
public function authentication(Request $rrequest) {
$credentials = $request->only('email', 'password');
// Guest authentication
if( $credentials['email'] === 'guest' && $credentials['password'] === 'guest' )
{
$payload = auth()->factory()->claims(['sub' => $this->createRandomDir()])->make();
$token = auth()->manager()->encode($payload);
// OR
$factory = JWTFactory::customClaims([
'sub' => $this->createRandomDir(),
]);
$payload = $factory->make();
$token = JWTAuth::encode($payload);
}
// Registered user authentication authentication
else
{
if (! $token = auth()->setTTL(60)->attempt($credentials))
return response()->json(['error' => 'invalid_credentials'], 400);
}
return response()->json(compact('token'));
}
这个想法是创建一个随机目录,并将其包含在有效负载中,并在下一个请求中使用它。
但是对于来宾,服务器作为令牌返回一个空对象。可能是因为数据库中没有用户。
我正在考虑的另一个想法是创建一个随机用户(将其添加到数据库中),并在每次用户需要将应用程序用作来宾/匿名用户时为其分配一个随机目录。对于这种方法,我唯一担心的是,如果有数千个来宾,则应该在数据库上创建数千个随机用户。
那你怎么看?还有其他更有效的方法来处理此问题吗?
任何想法都受到欢迎。