Laravel - 仅为当前会话

时间:2017-02-20 08:10:41

标签: php laravel session

我想为auth用户附加一个值

auth()->user() OR Auth::user()

仅适用于当前登录的会话。 (即他们注销或auth会话到期,价值丢失)。

Auth::user()->isTheOne = true;

以上代码仅适用于当前请求,并且不会在进一步的请求中保留。我怎样才能做到这一点。因此,当我尝试从同一用户的不同请求访问上述代码时,它不会显示null?

3 个答案:

答案 0 :(得分:1)

如果您希望在会话期间保留数据,则需要使用Laravel提供的会话门面。一个简单的例子是

// Via a request instance...
$request->session()->put('key', 'value');

// Via the global helper...
session(['key' => 'value']);

有关会话和Laravel read the documentation here的更多信息。

答案 1 :(得分:1)

您可以在用户的​​课程中添加isTheOne功能:

public function isTheOne() {
    session(['is_the_one' => true]);
}

然后在Controller或其他地方调用您的方法:

Auth::user()->isTheOne();

修改

根据你的评论,如果你想要更通用的东西,你可以尝试:

public function __set($key, $value) {
    session([$key => true]);
    parent::__set($key, $value);
}

因此,每当您拨打Auth::user()->isTheOne = true;或类似内容时,都会将其记录到会话中。这对我来说似乎很奇怪,但如果它是你想要的,那么(也许我误解了一些东西)。

答案 2 :(得分:0)

我认为你可以设置会话,

public function postUpdate(Request $request) {

    if ($request->session()->has('user') {
        $user = $request->session()->get('user');

    } else {

        $user = Auth::user();
        $user->isTheOne = true;
        $request->session()->put('user', $user);

   }


}