我对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;
答案 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';
}
最好是提供您正在使用的所有路线。