Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.04.2019 13:38:41

Сессии (авторизация) заканчивается мгновенно

Вчера я создавал тему где описывал проблемв - 419 статус
а если отключить токен то просто не авторизуется

Я пришел к выводу что тут дело в том что сессии оканчиваются сразу же
SESSION_LIFETIME=1200

сесии были в файлах - папка была доступна для записи
перенес сессии в бд - но не помогло вот видно что меня авторизовало под ид 81 а потмо авторизация пропала:
http://prntscr.com/n9zy6j

в чем может быть дело??

Не в сети

#2 10.04.2019 16:48:05

Re: Сессии (авторизация) заканчивается мгновенно

> Сессии (авторизация) заканчивается мгновенно
> а если отключить токен то просто не авторизуется

Сессии и токен API это два разных способа идентификации пользователя. В Laravel принято применять мидлварь сессии для маршрутов из web.php, а мидлварь про токены для маршрутов из api.php.

Есть подозрение, что что-то пошло не так ))) Может проще с чистого проекта начать, а не вникать чего уже понаворочено?

https://laravel.com/docs/5.8/authentication
vs.
https://laravel.com/docs/5.8/api-authentication


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 10.04.2019 16:53:25

Re: Сессии (авторизация) заканчивается мгновенно

ну смотрите
вот мой контроллер с авторизацией:

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Models\User\User;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Psy\Exception\ErrorException;

use Session;

/**
 * Class LoginController
 * @package App\Http\Controllers\Auth
 */
class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/account';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
       // $this->middleware('guest')->except('logout');
    }
	

    /**
     * @param Request $request
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function auth(Request $request)
    {
	
	
        $validator = Validator::make($request->all(), [
            'email'    => 'required|email|exists:users,email',
            'password' => 'required|string|min:6',
        ]);
		

        $user = User::where(['email' => $request->email])->first();

        if (count($validator->errors()) || ! $user) {
            return response()->json(['loginErrors' => $validator->errors(), 'status' => 0], 400);
        }
		
		$rt = '/account';
		if($user->role == 'rr1')
			$rt = '/rr1';
		elseif($user->role == 'rr2')
			$rt = '/rr2';

        $credentials = $request->only(['email', 'password']);

        if (Auth::attempt($credentials)) {
			
			$user = Auth::user();
			

			return redirect($rt);
			
        } else {
           return redirect('/');
        }
    }

...
}

вот мои роуты в web.php

Route::middleware('guest')->get('/login', function () {
    return view('site.auth');
})->name('authUser');

Route::middleware('auth')->get('/logout', 'Auth\LoginController@logout')->name('logout');
Route::post('/registration', 'Site\RegistrationController@registration');
Route::post('/login', 'Auth\LoginController@auth');

можете что-нибудь посказать?
что не так?

Не в сети

#4 10.04.2019 17:09:04

Re: Сессии (авторизация) заканчивается мгновенно

"Заканчивается мгновенно" — это ты как определяешь, тебя приложение вообще узнаёт хотябы какое-то время или ты делаешь вывод эмпирически, наблюдая какие-то записи?

Этот код мало чем полезен. Я бы посмотрел как описаны маршруты для /rr1 /rr2. Ведь ты по ним судишь, что "заканчивается"?!


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#5 10.04.2019 17:12:23

Re: Сессии (авторизация) заканчивается мгновенно

Короче говоря, если суть ускользает, надо начинать с типовых примеров из офф. документации. Там маршрут /home покрыт авторизацией.

И ещё было бы неплохо использовать термины одинаково. Вот я шпаргалку писал когда-то: https://php.ru/forum/threads/avtorizaci … ija.53234/
просто я не уверен что мы с тобой понимаем слово "авторизация" одинаково.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#6 10.04.2019 17:15:07

Re: Сессии (авторизация) заканчивается мгновенно

"Заканчивается мгновенно" — это ты как определяешь, тебя приложение вообще узнаёт хотябы какое-то время или ты делаешь вывод эмпирически, наблюдая какие-то записи?

ну потому что если в контролере Auth::attempt и потом Auth::check возвращают true
$user = Auth::user(); - также дает данные об авторизованном пользователе

потом меня редиректит на /login опять
то есть меня редиректит на /account а так как я уже не авторизован то меня редиректит на /login
отсюда такой вывод

даже если не делать редирект а просто  Auth::attempt а потом скажем открывать главную страницу то авторизации нет

Не в сети

#7 10.04.2019 17:23:22

Re: Сессии (авторизация) заканчивается мгновенно

Ну похоже я угадал — ты авторизацией называешь всё подряд. Извини, я не готов сильно издалека объяснять.
Ссылки по теме я дал.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#8 10.04.2019 17:29:17

Re: Сессии (авторизация) заканчивается мгновенно

И ещё было бы неплохо использовать термины одинаково. Вот я шпаргалку писал когда-то: https://php.ru/forum/threads/avtorizaci … ija.53234/
просто я не уверен что мы с тобой понимаем слово "авторизация" одинаково.

не совсем понял))
ну судя оп вашем посту я имею ввиду  аутентификацию
но аутентифицированный пользовтаель имеет доступ к определенным страницам

если можете подскажите както роуты от этого меняются?

Не в сети

#9 10.04.2019 17:40:01

Re: Сессии (авторизация) заканчивается мгновенно

скажем даже используя
Auth::loginUsingId(81);

аутентификация не сохраняется

Не в сети

Подвал раздела