Angularjs 使用JWT对来宾/匿名用户进行身份验证

Angularjs 使用JWT对来宾/匿名用户进行身份验证,angularjs,authentication,jwt,anonymous,Angularjs,Authentication,Jwt,Anonymous,我正在建立一个SPA,用户可以上传一些文件。前端使用AngularJS编写,而后端使用Laravel5.7中的API。使用jwt auth库实现身份验证 到目前为止,我已经为注册用户实现了这一点,其中每个用户在服务器上都有一个个人目录,他/她在那里上传文件。注册用户和匿名用户的区别在于,匿名用户的文件将在一段时间后被删除 现在,我想为匿名/来宾用户做同样的事情(如果按按钮继续作为来宾)。因此,我在authcontroller.php端首先尝试的是使用如下内容: public function a

我正在建立一个SPA,用户可以上传一些文件。前端使用AngularJS编写,而后端使用Laravel5.7中的API。使用
jwt auth
库实现身份验证

到目前为止,我已经为注册用户实现了这一点,其中每个用户在服务器上都有一个个人目录,他/她在那里上传文件。注册用户和匿名用户的区别在于,匿名用户的文件将在一段时间后被删除

现在,我想为匿名/来宾用户做同样的事情(如果按按钮继续作为来宾)。因此,我在authcontroller.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'));
}
其想法是创建一个随机目录,将其封装在有效负载中,并在下一个请求中使用它

但是对于来宾,服务器返回一个空对象作为令牌。可能是因为数据库中没有用户

我正在考虑的另一个想法是创建一个随机用户(将其添加到数据库中),并在每次用户需要以来宾/匿名身份使用应用程序时为其分配一个随机目录。对于这种方法,我唯一担心的是,如果有数千名来宾,那么应该在DB上创建数千名随机用户

那你觉得呢?有没有其他更有效的方法来处理这个问题

任何想法都欢迎