【问题标题】:Laravel routes for admin and users管理员和用户的 Laravel 路由
【发布时间】:2016-06-06 10:37:22
【问题描述】:

我的项目有 2 个登录页面

1) cms/admin/login

2) cms/用户/登录

如果用户到用户登录页面,如何重定向 cms/用户/登录

如果管理员调用 cms/admin/重定向到cms/admin/登录页面

【问题讨论】:

    标签: laravel routes


    【解决方案1】:

    首先,在用户登录您的应用程序之前,您不知道用户是用户还是管理员,因此为同一事物设置 2 条不同的路线有点糟糕。要实现与您想要的类似的东西,您需要有一个cms/login 路由,用户/管理员将登录并根据他的状态(例如1 - 用户,2 - 管理员)将他重定向到cms/user/pagecms/admin/page .为此,您必须使用 Middleware,这在 Laravel 官方文档中有很好的记录。

    例如,所有管理页面的中间件应如下所示

    <?php
    
    namespace App\Http\Middleware;
    
    use Closure;
    
    class AdminMiddleware
    {
        /**
         * Run the request filter.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            if ($request->input('status') == 2) {
            //2 means its admin and i let him get that admin page
               return $next($request);
            }
            //he is not admin so i redirect him back
            return Redirect::back();            
        }    
    }
    

    Kernel.php 中添加中间件别名

    protected $routeMiddleware = [        
            'admin' => \App\Http\Middleware\AdminMiddleware::class,
        ];
    

    routes.php 中,您将中间件分配给该路由

    Route::get('/cms/admin/page', ['middleware' => 'admin', 'uses'=>'Controller@method']);
    

    希望对你有帮助

    【讨论】:

    • 谢谢你的帖子,但也许你有一些例子?
    • @GoranSiriev 添加了一个简单的示例。官方文档中有更好的记录
    • 实现这一点的“Laravel”方法是通过Gates。请参阅文档:laravel.com/docs/5.8/authorization
    猜你喜欢
    • 2017-12-31
    • 2015-11-09
    • 2018-09-21
    • 2016-04-21
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    相关资源
    最近更新 更多