Laravel по-русски

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

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

#1 06.10.2017 00:06:13

Почему нет аутентификации в Middleware

Посмотрите пожалуйста что может быть такое.

dd($request->session()->get('userData'));

Показывает юзера то значит аутентификация прошла успешно и в сессии есть юзер,
так как прошел условие

if(Auth::check())){

А если захожу на страницу home появляется форма логина как для не авторизированного пользователя

<?php

namespace App\Http\Middleware;

use App\Http\Controllers\LoginController;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\Authenticatable;
use Illuminate\Support\Facades\View as View;

use App\User;
use AuthenticatesUsers;
class SmsAuthenticate
{



    /**
     * The authentication factory instance.
     *
     * @var \Illuminate\Contracts\Auth\Factory
     */
    protected $auth;

    /**
     * Create a new middleware instance.
     *
     * @param  \Illuminate\Contracts\Auth\Factory $auth
     * @return void
     */


    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @param  string[] ...$guards
     * @return mixed
     *
     * @throws \Illuminate\Auth\AuthenticationException
     */
    public function handle(Request $request, Closure $next)
    {
        dump($request->input('type'));

        if(null!==($request->input('type'))){
            $request->type=$request->input('type');
        }
        if(null!==($request->input('id'))){
            $id=$request->input('id');
        }
        if (!Auth::check()/*!$this->auth->user()*/) {
            if(isset($request->id)){
                $user=User::where('id',$request->id)->get();
                Auth::loginUsingId($user[0]->id,true);
                $request->session()->put('userData', $user);
                
                
       }else{

         return redirect()->route('sms_login',['type'=>$request->type]);
            }
        /*return redirect()->route('sms_login',);*/
        }
        else{
            dd($request->session()->get('userData'));    
        }
        return $next($request);
    }
}

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

Изменено imediasun (06.10.2017 00:29:59)

Не в сети

#2 06.10.2017 09:26:38

Re: Почему нет аутентификации в Middleware

Попробуй вместо

Auth::check()

auth()->check() и auth()->user()->id везде

Изменено sam (06.10.2017 11:32:21)

Не в сети

#3 06.10.2017 12:11:33

Re: Почему нет аутентификации в Middleware

Написал вместо

Auth::check()

auth()->check()
а вместо

Auth::loginUsingId($user[0]->id,true);

auth()->loginUsingId($user[0]->id,true);

Та же проблема ничего не поменялось

Не в сети

#4 06.10.2017 13:43:05

Re: Почему нет аутентификации в Middleware

Слушай, если я не ошибаюсь, после версии 5.2 ларавелевские сессии нельзя передавать в контроллеры и миделвары.. миделварь сам рулит сессией.. тебе нужно самому передать в него ид пользователя и в нем уже сравнивать может он или не может отправлять запрос.
public function handle($request, Closure $next, $adminId)

https://laravel.ru/forum/viewtopic.php?id=2907 тут в комментах я написал как туда передать пользователя

Изменено sam (06.10.2017 13:44:34)

Не в сети

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