Как получить сеанс памяти после входа в laravel 5?
Я начинаю работать с моим проектом, используя 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];
}
Пожалуйста, помогите мне в этом.
Большое спасибо.
Ответы
Ответ 1
Если это работает идеально локально, а не только его, вероятно, одна из двух вещей.
1) вам необходимо установить права доступа к папке хранилища для записи.
2) когда вы входите в систему локально в браузере, и он сохраняет ваш файл cookie, если вы пытаетесь выполнить вход в систему, он регистрирует вас локально, потому что тот же файл cookie в основном, но указывает на разные домены. Поэтому вы, вероятно, должны использовать разные браузеры, если хотите работать локально и онлайн одновременно.
Ответ 2
Используйте ниже код
setInterval(function(){
$.get('/my/ping/route');
}, 1000 * 60);
.ajaxError()
Ответ 3
Что вы можете попробовать - Session: save(); Он решил мою проблему, когда сеанс не переносился при перенаправлении пользователя на платежный шлюз.
Из того, что я слышал, это вызвано некоторым прерыванием запроса HTTP.
Ответ 4
Если журналы ошибок в хранилище/журналы не дают никаких сведений о таких проблемах, как разрешения на доступ к каталогам, проверьте файл .env на своем сервере для SESSION_DRIVER, загружаемой в config/session.php, чтобы убедиться, что у вас есть правильный механизм сохранения на основе конфигурации вашего сервера (файл, cookie, database, apc, memcached, redis, и др.).
Если это не помогает, проверьте файл config/session.php. Я видел, что кто-то задал свойство lifetime 0, думая, что это сделает сеансы неопределенными, но на самом деле это вызвало проблему, с которой вы столкнулись.
Ответ 5
Проверьте, как вы храните сеанс.
По умолчанию laravel использует файловую (storage/framework/sessions
), убедитесь, что каталог доступен для записи.
Ответ 6
- во-первых, настройки вашего сервера вы должны проверить. проверьте разрешение папки хранения. (
sudo chmod -R 777 storage
)
- если он не фиксирован. затем очистите кеш браузера и выйдите из локального приложения и попробуйте снова войти в систему. возможно, вы можете сломать коды после установки cookie.
Ответ 7
1) Установите права доступа к папке
2) Очистите кеш и повторите попытку входа в систему. Включите отчет об ошибках для отладки, чтобы вы могли проверить отчет.
: https://laracasts.com/discuss/channels/general-discussion/starting-session-after-authebtication
Ответ 8
Если вы размещаете свой проект, возможно, у вас нет правильных разрешений файловой системы. Вместо этого используйте драйвер базы данных сеанса.
Обратитесь к Laravel 5 в сеансе хранения в базе данных/redis.
Ответ 9
Я не уверен, что вы пытаетесь сделать,
вы должны попробовать следующее:
Session::put('url.intended', '/')