重定向页面时 Laravel Auth 会话丢失
Posted
技术标签:
【中文标题】重定向页面时 Laravel Auth 会话丢失【英文标题】:Laravel Auth session losing when redirect pages 【发布时间】:2014-07-26 00:51:46 【问题描述】:我对 laravel 会话有身份验证问题。 (它之前在同一系统中工作)
这是我的用户控制器
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;
【问题讨论】:
检查您的session.php
配置文件。 domain
和 path
设置是否与您的开发环境匹配?
我检查了 session.php 它们是默认设置 'path' => '/', 'domain' => null,
您在使用虚拟主机环境吗?什么是会话驱动程序?如果您尝试登录http://localhost/myproject/public/
之类的网址或类似的网址,则可能是问题所在。
我不在虚拟主机中工作。我的会话驱动器是文件。 Url 是一个真实的域。当我在它工作之前对其进行测试时。
【参考方案1】:
检查您的路线以获取postLogin()
功能。如果你在UserController
中使用,它应该在post
方法下面。
Route::post('login', array('uses' => 'UserController@postLogin'));
您提供的功能和路线与我完美配合,但如果您想检查用户是否保存在会话中,请尝试这样。
if (Auth::check())
echo 'My user is logged in';
如果你能提供你正在使用的所有路线,那就更好了。
【讨论】:
【参考方案2】:使用数据库会话,更多信息:http://laravel.com/docs/5.0/session#database-sessions
或
我遇到了同样的问题。并发现我的代码有问题
在我的控制器中:
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 为空 所以“价格”是空的
所以我在放入会话之前检查会话是否已经获得了价值
public function login(Request $request)
//check session already got value
if(Session::get('price') == "")
//assign $request data to session
Session::put('price',$request->price);
问题为我解决了。
希望对遇到同样问题的人有所帮助
【讨论】:
以上是关于重定向页面时 Laravel Auth 会话丢失的主要内容,如果未能解决你的问题,请参考以下文章
使用Laravel 5.7中的Auth激活用户会话时重定向到页面的方法