MiddleWare 上的 Laravel 返回视图
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/50408698/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Laravel return view on middleWare
提问by DolDurma
in laravel i'm trying to check user activecolumn and if its 0then must be show simple view as your account is disable, after implementing below codes i get this error:
在laravel中,我正在尝试检查用户active列,如果它0必须显示简单视图为your account is disable,在实现以下代码后,我收到此错误:
my middleware:
我的中间件:
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (auth()->check()) {
if (auth()->user()->active == 0) {
auth()->logout();
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
}
return $next($request);
}
}
kernel.php:
kernel.php:
...
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\CheckUserActive::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
...
user-messages.blade.php:
user-messages.blade.php:
@extends('layouts.frontend.main')
@section('content')
<div class="content-wrapper">
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-body">
<p style="text-align: center;">
{!! $message !!}
</p>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
采纳答案by Saurabh
You shouldn't use middleware to return a view, rather use it to redirect to a route and then return a view from your controller.
您不应该使用中间件来返回视图,而应该使用它来重定向到路由,然后从控制器返回视图。
In your middleware:
在您的中间件中:
use Auth;
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
if (Auth::User()->active == 0) {
Auth::logout();
retrun redirect()->route('redirect-route');
}
}
return $next($request);
}
}
Create a new route:
创建新路由:
Route::get('/', [
'as' => 'redirect-route',
'uses' => 'PageController@redirectFunction',
]);
Now create a function in your controller:
现在在你的控制器中创建一个函数:
public function redirectFunction()
{
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
回答by adam
based on the documentation, you can access view using
response()->view('custom');
根据文档,您可以使用访问视图
response()->view('custom');
回答by Ajay
This one work for return view from middleware
这一项用于从中间件返回视图
return new response(view('view.path'));
回答by Alessandro.Vegna
回答by AddWeb Solution Pvt Ltd
You should try this:
你应该试试这个:
use Auth;
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
if (Auth::user()->active == 0) {
Auth::logout();
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
}
return $next($request);
}
}


