【问题标题】:Lumen 5.5 Session store not set on requestLumen 5.5 会话存储未按要求设置
【发布时间】:2018-04-12 23:04:18
【问题描述】:

我使用vue-authenticate(https://github.com/dgrubelic/vue-authenticate)在我们的web服务上创建了两种连接,第一种是连接到他的账号,第二种是连接时添加账号。

我使用 Lumen(Laravel 开发)在 PHP 中进行后端和连接管理。

Lumen 下只有会话不可用,如何存储临时凭据?

use League\OAuth1\Client\Server\Twitter;

public function login(Request $request)
{
    try {

        $this->server = new Twitter([
            'identifier' => $this->key,
            'secret' => $this->secret,
            'callback_uri' => $request->get('redirectUri'), // Variable getted from POST
        ]);

        if(empty($request->get('oauth_token'))) {
            $temporaryCredentials = $this->server->getTemporaryCredentials();

            $request->session()->put('temporary_credentials', serialize($temporaryCredentials)); // Session doesn't works

            return response()->json([
                'oauth_token' => $temporaryCredentials->getIdentifier(),
                'oauth_token_secret' => $temporaryCredentials->getSecret(),
            ], 200);
        } else {
            // I must have oauth_token here with session
        }

    } catch (\Exception $e) {
        return response()->json($e->getMessage(), 500);
    }
}

【问题讨论】:

    标签: vue.js lumen lumen-5.3 lumen-5.4


    【解决方案1】:

    我认为您只是误解了 Web 服务 (API) 的概念。 API 不是有状态的应用程序,而是无状态的,意味着每个请求都没有可用的会话。因此,在主要的 API 框架中,不支持会话(官方)。为了解决您的问题,您可以将临时凭据存储在数据库中,或者可能存储在缓存中(使用 TTL,例如:60 分钟),如下所示:

    $requestIdentifier = $request->getClientIdentifier(); // YOU SHOULD IMPLEMENT THIS METHOD
    
    Cache::put($requestIdentifier, $temporaryCredentials, 60);
    

    要检索您的缓存,只需使用:

    $temporaryCredentials = Cache::get($requestIdentifier);
    

    这里我给你一些想法,当你实现getClientIdentifier时,你可以强制客户端在你的header中发送一个唯一的key,比如:

    axios.post('http://somewhere', {
        headers: {
            'x-request-identifier': UNIQUE_ID
        }
    })
    

    在您的 API 中:

    $requestIdentifier = $request->header('x-request-identifier');
    

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 2023-03-22
      • 2020-08-24
      • 2017-03-13
      • 2020-11-28
      • 2017-09-30
      • 1970-01-01
      • 2021-05-08
      • 2016-08-30
      相关资源
      最近更新 更多