2016-12-02 33 views
1

我使用hesto /多AUTH包laravel AUTH中间件不redirectly意

为默认值,如果我有分配AUTH中间件到路由登录所以之后应该重定向我回意页,但是,它只做第一次..

一切工作正是我想只有第一次,但一旦我注销,并尝试再次访问该路线它确实去登录页面,并重定向到用户/首页,但第一次它完美的作品看40秒的视频 http://neelnetworks.org/video/laravel.mp4 这方面的任何解决方案?

这些都是我的网络的路由

Route::get('/', '[email protected]')->middleware('user'); 

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

    Route::get('/register', 'UserAuth\[email protected]'); 
    Route::post('/register', 'UserAuth\[email protected]'); 

    Route::post('/password/email', 'UserAuth\[email protected]'); 
    Route::post('/password/reset', 'UserAuth\[email protected]'); 
    Route::get('/password/reset', 'UserAuth\[email protected]'); 
    Route::get('/password/reset/{token}', 'UserAuth\[email protected]'); 

}); 

这里是我的网页控制器

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

class PagesController extends Controller 
{ 

    public function getIndex() 
    { 

    return "hello"; 
    } 
} 

它完美的作品,为什么不经过我们登录一次,第一次?

如果清除我的所有缓存和Cookie一遍的作品,这是一个默认行为,或这是laravel的错误吗?可以请你澄清或者是与包问题

问题已经在github上被提出https://github.com/Hesto/multi-auth/issues/46

+0

尝试调试会话。很可能laravel在“预期”中存储了一条特定路线。这不会在初始登录/设置时存储。但是,一旦它登录后,它可能会在你的会话中。你应该能够看到它,如果你只是倾倒出一切。尝试找到我们是否有“意图”的价值,如果是的话 - 尝试找到它的设置。 –

+0

我没有发现会话中设置的任何变量唯一的事情我发现是在饼干XSRF-TOKEN和laravel_session没有别的,会话保持空 –

回答

0

登录后,这么多的挖掘,我发现了正确的解决方案,你将被重定向到/用户/家庭它改变了以前的网址

在RedirectIfNot {后卫名}如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); 
    } 
} 
0

默认重定向laravel登录后是去中的LoginController /家集:

use AuthenticatesUsers; 

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

并有默认的中间件RedirectIfAuthenticated

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); 
    } 
} 

和应用程序/ HTTP /控制器/认证/ 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'; 

所以这就是你需要作出改变,以自己的方式...

+0

我认为你dint了解我的问题..去这个链接https://github.com/ hesto/multi-auth/issues/46并试图理解我想说的话 –

+0

现在我明白了,你并没有使用普通的Laravel,这是一些外部的“插件”? – lewis4u

+0

是的,它是一个laravel包 –

1

让您USERAUTH里面你这样的showLoginForm方法/ LoginController.php

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

因为发布形式时/用户/登录,如果你在

+0

谢谢亲爱的..它工作完美,但我也必须删除$ redirectTo变量,以便此工作..非常感谢 –

+0

很高兴它帮助! –