我开始使用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];
}
请帮帮我。
非常感谢。
答案 0 :(得分:1)
如果这在本地完美运作,而不仅仅是它可能是两件事之一。 1)您需要将存储文件夹的权限设置为可写。 2)当您在浏览器上本地登录并保存您的cookie时,如果您尝试在线登录,它会在本地登录,因为它基本上是相同的cookie但指向不同的域。因此,如果您想同时在本地和在线工作,您可能应该使用不同的浏览器
答案 1 :(得分:1)
使用以下代码
setInterval(function(){
$.get('/my/ping/route');
}, 1000 * 60);
.ajaxError()
答案 2 :(得分:1)
您可以尝试的是Session:save();它解决了我在将用户重定向到支付网关时未进行会话的问题。
据我所知,这是由HTTP请求中断引起的。
答案 3 :(得分:1)
如果存储/日志中的错误日志未提供有关目录权限等问题的任何线索,请检查服务器上的 .env 文件以获取 config / session.php 中加载的> SESSION_DRIVER 变量,以确保您拥有基于服务器配置的正确持久性机制(文件,cookie,数据库,apc,memcached,redis,等)。
如果这样做无效,请检查 config / session.php 文件。我见过有人将终身属性设置为 0 ,认为这会使会话无限期,但实际上它会导致你遇到的问题。
答案 4 :(得分:1)
请检查您的会话存储方式。
默认情况下,laravel使用基于文件的(storage/framework/sessions
),确保目录可写。
答案 5 :(得分:0)
sudo chmod -R 777 storage
)答案 6 :(得分:0)
1)设置文件夹权限 2)清除缓存并再次尝试登录。为调试启用错误报告,以便您可以检查清除日志。
参考:https://laracasts.com/discuss/channels/general-discussion/starting-session-after-authebtication
答案 7 :(得分:0)
如果您正在托管您的项目,可能是您没有正确的文件系统权限。改为使用会话数据库驱动程序。
答案 8 :(得分:-1)
我不确定你要做什么, 你应该试试这个:
Session::put('url.intended', '/')