【问题标题】:Laravel routes.php include file using SessionLaravel routes.php 使用 Session 包含文件
【发布时间】:2015-07-19 23:59:59
【问题描述】:

不确定这是否可能,但可以。

我要做的是将我的“管理员”路由包含为一个单独的文件,前提是用户是管理员(因此非管理员会收到 404 错误

routes.php

if( Session::get('user')->is_admin )
    require_once('routes-admin.php');

if( Auth::check() )
    require_once('routes-user.php');

Route::get('/', function() {
    return view('home');
});

路由-admin.php

Route::get('admin', function() {
    return view('admin-dashboard');
});

routes-user.php

Route::get('user', function() {
    return view('user-dashboard');
});

我想要做的是避免对每个Route 重复测试 因此,如果我的用户段有 10 个页面,我目前需要 30 行专用于 Auth::check() 的代码(if、else 和重定向,如果不是),我可以在 routes.php 上进行一次检查,用户将得到一个 @ 987654327@如果他们不属于

有没有办法在Route 之外执行此检查?

【问题讨论】:

    标签: authentication laravel routes laravel-5


    【解决方案1】:

    也许您想先阅读documentation

    Route::group(['middleware' => 'auth'], function()
    {
        Route::get('/', function()
        {
            // Uses Auth Middleware
        });
    
        Route::get('user/profile', function()
        {
            // Uses Auth Middleware
        });
    
    });
    

    上面的代码正是你所需要的,是“登录的人”吗?让他转到“随便”页面。

    您可以自己创建中间件(检查用户是管理员还是基本用户)并应用于群组。

    例如middleware

    class BeforeMiddleware implements Middleware
    {
        public function handle($request, Closure $next)
        {
            // Perform action
    
            return $next($request);
        }
    }
    

    不要误会我的意思,只是你的方法真的不像 Laravel。尝试看一些在 L5 甚至 L4 中完成的开源项目。尝试使用泰勒已经为你做的一切。文档是你的朋友。

    【讨论】:

    • 谢谢,从 4 开始我并没有真正考虑中间件
    • 没问题,你永远不应该在 Laravel 应用程序中使用include(),这只是一种不好的做法。请注意,在 L4 中您有可用的过滤器(概念上与 L5 中间件相同)。
    【解决方案2】:

    根据@Kyslik 对中间件的响应,您可以像默认路由文件一样在您的RouteServiceProvider 中“包含”您自己的路由文件,RouteServiceProvide 位于:app/Providers/RouteServiceProvider.php,

    找到该部分

    require app_path('Http/routes.php');
    

    只需复制您想要包含的路由文件的名称

    【讨论】:

    • 更改了已接受的答案,因为这更接近我的问题所寻找的答案
    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 2013-06-14
    • 2017-01-11
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 2016-06-20
    相关资源
    最近更新 更多