viaRemember不工作 - laravel

时间:2014-01-21 21:14:40

标签: authentication login laravel

Auth ::尝试完美,但是当您传递第二个参数“true”时,显然无关心或无法使用viaRemember恢复

viaRemember无效,请查看

控制器用户

`$`userdata = array(
    'email'     => trim(Input::get('username')),
    'password'  => trim(Input::get('password'))
);

if(Auth::attempt(`$`userdata, true)){
    return Redirect::to('/dashboard');
}

查看“信息中心”,始终显示777

@if (Auth::viaRemember())
    {{666}}
@else
    {{777}}
@endif

3 个答案:

答案 0 :(得分:2)

我遇到了同样的障碍,因此查看代码可以看出viaRemember并不意味着用作检查用户是否以所有方式之一登录系统的功能用户可以登录。

' viaRemember'用于检查用户是否通过`viaRemember'特别登录系统。曲奇饼。

从我收集的信息中,用户的身份验证有两种方式:

  1. 一个via remember Cookie。

    将Cookie值与users表中的via remember字段进行比较。

  2. 会话Cookie。

    在服务器中使用cookie值来从中获取会话 会话商店。在商店的会话对象上附加了数据。其中一个 数据项是连接到会话的用户ID。第一次 会话创建后,系统将用户ID附加到数据 本赛季。

  3. Illuminate\Auth\Guard课程中:

    public function user()
    {
        if ($this->loggedOut) return;
    
        // If we have already retrieved the user for the current request we can just
        // return it back immediately. We do not want to pull the user data every
        // request into the method because that would tremendously slow an app.
        if ( ! is_null($this->user))
        {
            return $this->user;
        }
    
        $id = $this->session->get($this->getName());
    
        // First we will try to load the user using the identifier in the session if
        // one exists. Otherwise we will check for a "remember me" cookie in this
        // request, and if one exists, attempt to retrieve the user using that.
        $user = null;
    
        if ( ! is_null($id))
        {
            $user = $this->provider->retrieveByID($id);
        }
    
        // If the user is null, but we decrypt a "recaller" cookie we can attempt to
        // pull the user data on that cookie which serves as a remember cookie on
        // the application. Once we have a user we can return it to the caller.
        $recaller = $this->getRecaller();
    
        if (is_null($user) && ! is_null($recaller))
        {
            $user = $this->getUserByRecaller($recaller);
        }
    
        return $this->user = $user;
    }
    

    仅当会话cookie身份验证不起作用时才会调用getUserByRecaller函数。

    viaRemember标志仅在getUserByRecaller函数中设置。 viaRemember方法只是一种简单的getter方法。

        public function viaRemember()
    {
        return $this->viaRemember;
    }
    

    所以最后,我们可以使用Auth::check()进行所有检查,包括viaRemember检查。它调用Guard类中的user()函数。

    似乎viaRemember只是一个指标。您需要执行Auth::check()类型的操作才能启动身份验证过程,因此将调用user()函数。

答案 1 :(得分:0)

您的项目似乎在Laravel 4.0上,但在Laravel 4.1中添加了viaRemember()!所以这是预期的。

答案 2 :(得分:0)

config\session.php文件中的

'expire_on_close' = false更改为true,一旦关闭重新启动浏览器,就必须正常。