登录laravel 5后如何获取会话记忆?
Posted
技术标签:
【中文标题】登录laravel 5后如何获取会话记忆?【英文标题】:How to get session remember after login in laravel 5? 【发布时间】:2015-10-09 02:25:23 【问题描述】:我开始使用 laravel 5 处理我的项目。我意识到在我登录到我的站点后,它在我的本地目录中可以正常工作,但我只知道当我将项目托管到服务器时遇到了问题。每次登录后,会话都不记得导致我出现问题的原因。
public function postLogin()
$hit = 0;
if(Request::ajax())
$pw = Request::input('pw');
if(!empty($pw))
$admin_pass = AdminPassword::first(['admin_pass']);
$ip_address = Request::ip();
if(!empty($admin_pass) && trim($admin_pass->admin_pass) == trim($pw))
if(Auth::attempt(['username' => Request::input('username'), 'password' => Request::input('password'),'status'=>1]))
try
$user = Auth::user();
$user->last_login = date('Y-m-d H:i:s');
$user->login_ip = $ip_address;
$user->save();
$permissions = Auth::user()->permission;
if(!empty($permissions) && count($permissions) >0)
session(['ROLE_PERMISSION'=>$permissions]);
$failed = FailedLogin::whereRaw('ip_address = INET_ATON(\''.$ip_address.'\')')->first();
if(!empty($failed))
$failed->delete();
catch (\Exception $ex)
$url = Request::session()->pull('url.intended', '/');
return ['url'=>$url,'msg'=>'Successfully.','status'=>true,'hit'=>$hit];
else
$hit = $this->updateFailedLogin($ip_address,Request::input('username'));
else
$hit = $this->updateFailedLogin($ip_address,Request::input('username'));
else
return redirect()->route('login');
return ['url'=>'','msg'=>'Try again.','status'=>false,'hit'=>$hit];
请帮我解决这个问题。
非常感谢。
【问题讨论】:
检查 config/auth.php 设置?然后如果新环境根据它设置正确。 【参考方案1】:如果这在本地工作得很好,而且不仅可能是两件事之一。 1)您需要将存储文件夹的权限设置为可写。 2)当您在浏览器上本地登录并保存您的cookie时,如果您尝试在线登录,它会在本地注销您,因为它基本上是相同的cookie但指向不同的域。因此,如果您想同时在本地和在线工作,您可能应该使用不同的浏览器
【讨论】:
【参考方案2】:使用下面的代码
setInterval(function()
$.get('/my/ping/route');
, 1000 * 60);
.ajaxError()
【讨论】:
【参考方案3】:你可以尝试的是 Session:save();它解决了我在将用户重定向到支付网关时没有进行会话的问题。
据我所知,这是由于 HTTP 请求中断造成的。
【讨论】:
【参考方案4】:如果 storage/logs 中的错误日志没有提供有关目录权限等问题的任何线索,请检查您服务器上的 .env 文件中的 >SESSION_DRIVER 变量在 config/session.php 中加载,以确保您拥有基于服务器配置(文件、cookie、数据库、apc、memcached、redis、等等)。
如果这没有帮助,请检查 config/session.php 文件。我看到有人将生命周期属性设置为 0 认为这会使会话无限期,但实际上它导致了您遇到的问题。
【讨论】:
【参考方案5】:请检查您存储会话的方式。
默认情况下,laravel 使用基于文件的 (storage/framework/sessions
),确保目录是可写。
【讨论】:
【参考方案6】:1)设置文件夹权限 2) 清除缓存并再次尝试登录。启用调试错误报告,以便您检查清除日志。
参考:https://laracasts.com/discuss/channels/general-discussion/starting-session-after-authebtication
【讨论】:
【参考方案7】: 首先你必须检查你的服务器设置。检查存储文件夹的权限。 (sudo chmod -R 777 storage
)
如果未修复。然后清除浏览器缓存,注销您的本地应用程序并尝试再次登录。也许你可以在设置 cookie 后破解密码。
【讨论】:
【参考方案8】:如果您正在托管您的项目,可能是您没有正确的文件系统权限。请改用会话数据库驱动程序。
请参阅Laravel 5 store session in database/redis。
【讨论】:
【参考方案9】:我不确定你想做什么, 你应该试试这个:
Session::put('url.intended', '/')
【讨论】:
以上是关于登录laravel 5后如何获取会话记忆?的主要内容,如果未能解决你的问题,请参考以下文章
错误 500:如何通过 Laravel 自定义配置文件获取会话变量?
Laravel 5.2:在用户登录/注销和注册后显示会话闪烁消息
任何想法如何使用 vue js 和 vue 路由器在 laravel 5.3 中进行基于会话的身份验证