首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在laravel中禁用特定用户的url?

如何在laravel中禁用特定用户的url?
EN

Stack Overflow用户
提问于 2017-03-20 13:44:55
回答 1查看 1.9K关注 0票数 0

我有一个admins表,其中包含一些列,如idadmin_typename等。这里我有两种类型的admin_type:一种是"admin“,另一种是"hod”。

现在的问题是,我希望使用(admin_type == "admin")登录的管理员能够访问所有的管理员URL,但当admin_type == "hod"我想限制用户可以访问的URL。

我使用的是Laravel 5.2。有人能帮我解决这个问题吗?

例如,如果使用admin_type=="hod"的用户访问这些链接

www.example.com/admin/add-user
www.example.com/admin/edit-user
www.example.com/admin/add-customer
www.example.com/admin/edit-customer

和更多的URL,我想显示一些像**You have no rights to access this link **这样的消息

下面是我的数据库结构:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-20 14:34:35

对于这样的用例,我会实现一个Middleware。只需在您的Laravel工作目录中执行php artisan make:middleware yourNameHere,artisan就会为您生成相应的中间件类。

然后你需要像这样的代码。这是一个简单的if条件,在用户不是admin的情况下使用403中止。

class AdminMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->user()->admin_type != 'admin') {
            return abort(403, "No access here, sorry!");
        }

        return $next($request);
    }
}

您的路由文件( routes /web.php):

...
Route::group(["middleware" => 'admin'], function () {
       //Your admin routes should be declared here
});
...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42896577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档