Laravel:如何从Paypal重定向后获得旧会话

时间:2014-01-20 22:57:02

标签: php laravel laravel-4

使用Paypal快速结账方式时,我提供的返回网址为http://example.com?sid= $ sid

在Cakephp中,我可以在过滤前的AppController中将session_id设置为$ _GET ['sid']。

但是如何在Laravel 4中使用$ _GET ['sid']获得旧会话?

1 个答案:

答案 0 :(得分:0)

您可以使用Illuminate\Session\Store#getId()获取内部会话ID(请参阅Symfony\Component\HttpFoundation\Session\Session#getId()Store已扩展),但如果会话ID由Laravel内部机构重新生成,则最终可能会错误地失效操作。

理想情况下,您可以创建自己的令牌进行验证,具体内容如下:

// Generate a random token, and place it into the session
Session::put('paypal_token', str_random(40));
// Formulate the URL
$paypal_url = route('root', array('token' => Session::get('paypal_token'));
// This will generate something like "http://example.com/?token=[randomstring]"

然后您可以验证:

if (Input::query('paypal_token') === Session::get('paypal_token')) {
    // Token valid
} else {
    // Token invalid
}

请参阅:str_random()Illuminate\Session\StoreIlluminate\Http\Request#query()Symfony\Component\Routing\Generator\UrlGenerator#generate()

编辑:我错误地获取了内部会话ID。我已在上面更新了它。 Laravel实际上使用Symfony的HttpFoundation组件来生成会话ID(参见docsource