使用Paypal快速结账方式时,我提供的返回网址为http://example.com?sid= $ sid
在Cakephp中,我可以在过滤前的AppController中将session_id设置为$ _GET ['sid']。
但是如何在Laravel 4中使用$ _GET ['sid']获得旧会话?
答案 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\Store
,Illuminate\Http\Request#query()
,Symfony\Component\Routing\Generator\UrlGenerator#generate()
编辑:我错误地获取了内部会话ID。我已在上面更新了它。 Laravel实际上使用Symfony的HttpFoundation
组件来生成会话ID(参见doc,source)