重定向页面时,Laravel Auth会话丢失

时间:2014-06-05 06:37:49

标签: php session authentication redirect laravel

我对laravel会话有一个auth问题。 (以前在同一系统中工作)

这是我的用户控制器

public function postLogin()
{
    $username = Input::get("username");
    $password = Input::get("password");
    $credentials = array
    (
        "username"=> $username,
        "password" => $password,
    );
    if (Auth::attempt($credentials)) 
    {
        echo Auth::user()->username;
        exit();

    }
    else
    {
        return Redirect::to("user/login")->with("error_msg","Giriş Başarısız! <br>Lütfen girdiğiniz bilgileri kontrol edip yeniden deneyin.");
    }
}

它返回用户名..但是当我重定向页面会话失败时。

public function postLogin()
{
    $username = Input::get("username");
    $password = Input::get("password");
    $credentials = array
    (
        "username"=> $username,
        "password" => $password,
    );
    if (Auth::attempt($credentials)) 
    {
        return Redirect::to('check_login');

    }
    else
    {
        return Redirect::to("user/login")->with("error_msg","Giriş Başarısız! <br>Lütfen girdiğiniz bilgileri kontrol edip yeniden deneyin.");
    }
}

我的路线:

Route::get("check_login",function(){
    echo Auth::user()->username;
});

结果:

ErrorException
Trying to get property of non-object
echo Auth::user()->username;

2 个答案:

答案 0 :(得分:2)

使用数据库会话,更多信息:http://laravel.com/docs/5.0/session#database-sessions

OR

我遇到了同样的问题。 &安培;发现我的代码存在问题

在我的控制器中:

public function login(Request $request){
    //assign $request data to session
    Session::put('price',$request->price);
}
public function checkLogin(){
    if(login fail){
    redirect back to login
    }
}

当我重定向到登录会话覆盖为空时,因为当我重定向时,$ request为空 所以&#39;价格&#39;是空的

所以我在进入会话之前检查会话已经获得了值

public function login(Request $request){
    //check session already got value
    if(Session::get('price') == ""){

    //assign $request data to session
    Session::put('price',$request->price);
    }
}

问题解决了我。

希望对任何有同样问题的人都有帮助

答案 1 :(得分:1)

检查postLogin()功能的路线。如果您在UserController中使用,则post方法应该低于此值。

Route::post('login', array('uses' => 'UserController@postLogin'));

您提供的功能和路线与我完美配合,但如果您想检查用户是否保存在会话中,请尝试这样做。

if (Auth::check())
{
    echo 'My user is logged in';
}

最好是提供您正在使用的所有路线。