簡體   English   中英

如何獲取存儲在數據庫中的會話ID?

[英]How to get the session ID stored in database?

我試圖通過制作另一個模型Sessions在會話表中添加額外的信息。 我正在使用以下問題答案中詳述的方法;

Laravel會話表添加了其他列

領域:

  • id - varchar(50) - laravel在這里存儲一個40個字符的字符串
  • payload - mediumtext - 通常為265個字符的字符串
  • last_activity - int(11)
  • user_id - bigint(20)
  • type - varchar(15) - 默認('biz')
  • created_at - timestamp - 默認值(CURRENT_TIMESTAMP)

模型

class Sessions extends BaseModel
{
    protected $table = 'sessions';
    protected $fillable = array(
        'id', 
        'payload', 
        'last_activity', 
        'user_id', 
        'type', 
        'created_at');

    public static function getCurrent()
    {
        return Sessions::find(Session::getId());
    }
} 

調節器

public function postLogin()
{
    if (\Auth::biz()->attempt(\Input::only(array('email', 'password')), 
        \Input::get('persist', 'no') == 'yes')) {
        $session = Sessions::getCurrent(); // returns NULL
        // fields getting values
        $session->save();
        return \Redirect::route('marketer.home');
    } else {
        return \Redirect::back()->withInput()->with('loginFail', true);
    }
}

我正在使用laravel v4.2.16與基於數據庫的會話管理。 函數Session::getId()不返回存儲在數據庫中的id,因此我無法通過我的Sessions::getCurrent()方法獲取當前會話的模態。

該方法之前有效,因此我們在其上構建了許多優化查詢。

嘗試這個:

$user = \Auth::user(); in the view file

然后將$ user變量打印為:

echo "<pre>";
print_r($user);
echo "</pre>";
exit;

看,如果這有幫助。

你需要調用靜態Session::unguard(); 獲取id然后Session::reguard();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM