【问题标题】:Laravel Middleware change response contentLaravel 中间件更改响应内容
【发布时间】:2016-05-20 09:25:17
【问题描述】:

对于我的应用程序,我拥有多个用户角色和自定义维护模式。如果站点处于维护模式,则根据用户的角色将限制他们对某些页面的访问。

因此,当“普通”用户访问论坛时,他们应该看到不同的视图,表明该站点处于维护模式;而当“管理员”用户访问论坛时,他们应该能够看到论坛。

public function handle($request, Closure $next) {
    if(Auth::user()->role->maintenance_mode != 1) {

        // They do not have access during maintenance mode,
        // so change the response to show a different view.

    }

    // They do have access during maintenance mode,
    // so continue the request.
    return $next($request);
}

是否可以使用相同的路由(例如 /forums)但显示不同的视图,由中间件更改。

【问题讨论】:

    标签: laravel-5.2 middleware


    【解决方案1】:

    有可能,是的,但是每个中间件调用 $next($request) 可能在路由之前指向另一个中间件,因此返回视图可能不是最好的主意。如果您确实想要这样做,那么您需要执行以下操作:return new Response(view('maintanance'));,并且不要忘记在中间件类的标题中包含 use Illuminate\Http\Response;

    在您的情况下,我要做的是有一个返回视图的路由,例如 /maintainance(最好带有名称),然后在中间件中,返回重定向到 return redirect()->route('maintanance'); 内的路由 if .

    你也可以抛出一个带有503 状态码的HttpException,让应用程序在第一个if 中调用Laravel 的built in maintenance mode

    【讨论】:

    • 绝对完美!谢谢。
    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 2021-04-30
    • 2011-01-20
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多