laravel身份验证中间件未在预期页面上重定向

laravel身份验证中间件未在预期页面上重定向,laravel,laravel-5.3,Laravel,Laravel 5.3,我正在使用hesto/multi auth软件包 默认情况下,如果我已将auth中间件分配给路由,那么在登录后,它应该将我重定向回预期页面,但这只是第一次 一切正常我只想第一次,但一旦我注销并尝试再次访问路由,它确实会转到登录页面,然后重定向到用户/主页,但第一次它工作正常,请参阅40秒视频 有什么解决办法吗 这些是我的网络路线 Route::get('/', 'PagesController@getIndex')->middleware('user'); Route::group(['

我正在使用hesto/multi auth软件包

默认情况下,如果我已将auth中间件分配给路由,那么在登录后,它应该将我重定向回预期页面,但这只是第一次

一切正常我只想第一次,但一旦我注销并尝试再次访问路由,它确实会转到登录页面,然后重定向到用户/主页,但第一次它工作正常,请参阅40秒视频 有什么解决办法吗

这些是我的网络路线

Route::get('/', 'PagesController@getIndex')->middleware('user');

Route::group(['prefix' => 'user'], function () {
  Route::get('/login', 'UserAuth\LoginController@showLoginForm');
  Route::post('/login', 'UserAuth\LoginController@login');
  Route::post('/logout', 'UserAuth\LoginController@logout');

  Route::get('/register', 'UserAuth\RegisterController@showRegistrationForm');
  Route::post('/register', 'UserAuth\RegisterController@register');

  Route::post('/password/email', 'UserAuth\ForgotPasswordController@sendResetLinkEmail');
  Route::post('/password/reset', 'UserAuth\ResetPasswordController@reset');
  Route::get('/password/reset', 'UserAuth\ForgotPasswordController@showLinkRequestForm');
  Route::get('/password/reset/{token}', 'UserAuth\ResetPasswordController@showResetForm');

});
这是我的网页控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PagesController extends Controller
{

   public function getIndex()
   {

    return "hello";
   }
}

登录后laravel的默认重定向是转到LoginController中的/home设置:

use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';
并且存在默认的中间件重定向身份验证

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/home');
        }

        return $next($request);
    }
}
在app/Http/Controllers/Auth/RegisterController.php中

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

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

因此,为了按照自己的方式工作,您需要在这里进行更改。

在UserAuth/LoginController.php中使用类似的showLoginForm方法

public function showLoginForm()
{
    session()->put('url.intended',url()->previous());
    return view('user.auth.login');
}

因为在将表单发布到/user/login时,它会更改以前的url,如果您在进行了大量挖掘之后登录,您将被重定向到/user/home

,我找到了正确的解决方案

在RedirectIfNot{guard name}中,例如RedirectIfNotAdmin

我们需要加上这一行

session()->put('url.intended', url()->current());
因此,中间件将如下所示

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfNotAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = 'admin')
    {

        if (!Auth::guard($guard)->check()) {
            session()->put('url.intended', url()->current());
            return redirect('/admin/login');
        }

        return $next($request);
    }
}

我想你无法理解我的问题。。转到这个链接,试着理解我想说的,正如我现在理解的,你没有使用普通的Laravel,这是一些外部“插件”?是的,这是一个Laravel软件包来调试你的会话。很可能laravel在“预定”中存储了一条特定路线。这不会存储在初始登录/设置时。但在您登录一次之后,它可能会在您的会话中。如果你把所有东西都扔掉,你应该能看到它。试着找出我们的“意图”中是否有值,如果有,试着找出它的设置位置。我在会话中找不到任何变量集,唯一能找到的是cookies XSRF-TOKEN和laravel_会话。除此之外,会话仍然为空亲爱的谢谢。。它工作得很好,但我还必须删除$redirectTo变量才能工作。。非常感谢,很高兴它有帮助!