laravel AUTH中间件不redirectly意
我使用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
登录后,这么多的挖掘,我发现了正确的解决方案,你将被重定向到/用户/家庭它改变了以前的网址
在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);
}
}
默认重定向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';
所以这就是你需要作出改变,以自己的方式...
我认为你dint了解我的问题..去这个链接https://github.com/ hesto/multi-auth/issues/46并试图理解我想说的话 –
现在我明白了,你并没有使用普通的Laravel,这是一些外部的“插件”? – lewis4u
是的,它是一个laravel包 –
让您USERAUTH里面你这样的showLoginForm方法/ LoginController.php
public function showLoginForm()
{
session()->put('url.intended',url()->previous());
return view('user.auth.login');
}
因为发布形式时/用户/登录,如果你在
谢谢亲爱的..它工作完美,但我也必须删除$ redirectTo变量,以便此工作..非常感谢 –
很高兴它帮助! –
尝试调试会话。很可能laravel在“预期”中存储了一条特定路线。这不会在初始登录/设置时存储。但是,一旦它登录后,它可能会在你的会话中。你应该能够看到它,如果你只是倾倒出一切。尝试找到我们是否有“意图”的价值,如果是的话 - 尝试找到它的设置。 –
我没有发现会话中设置的任何变量唯一的事情我发现是在饼干XSRF-TOKEN和laravel_session没有别的,会话保持空 –