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

Php 如何在laravel中禁用特定用户的url?,php,laravel-5.2,laravel-middleware,Php,Laravel 5.2,Laravel Middleware,我有一个admins表,它有一些列,如id,admin\u type,name,等等。这里我有两种类型的admin\u type:一种是“admin”,另一种是“hod” 现在的问题是,我希望使用(admin\u type==“admin”)登录的管理员能够访问所有管理员URL,但当admin\u type==“hod”时,我希望限制用户可以访问的URL 我使用的是Laravel5.2。有人能帮我解决这个问题吗 例如,如果具有admin\u type==“hod”的用户访问这些链接 www.ex

我有一个admins表,它有一些列,如
id
admin\u type
name
,等等。这里我有两种类型的
admin\u type
:一种是“admin”,另一种是“hod”

现在的问题是,我希望使用
(admin\u type==“admin”)
登录的管理员能够访问所有管理员URL,但当
admin\u type==“hod”
时,我希望限制用户可以访问的URL

我使用的是Laravel5.2。有人能帮我解决这个问题吗

例如,如果具有
admin\u 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,我想显示一些信息,如
**您无权访问此链接**

以下是我的数据库结构:

我将为这样的用例实现一个新的应用程序。只需在您的Laravel工作目录中执行
php artisan make:middleware Yourname here
,artisan就会为您生成相应的中间件类

那么你需要这样的代码。这是一个简单的if条件,在用户不是管理员的情况下使用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):

我将为这样一个用例实现一个新的应用程序。只需在您的Laravel工作目录中执行
php artisan make:middleware Yourname here
,artisan就会为您生成相应的中间件类

那么你需要这样的代码。这是一个简单的if条件,在用户不是管理员的情况下使用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):


你试过什么?有什么问题吗?另外,请阅读此处以了解如何正确格式化帖子。@EdCottrell您发送的链接基于laravel提供的auth componenet,但我已使用核心编码进行了登录注册。我不确定“核心编码”是什么意思,但您又尝试了什么?有很多合理的方法可以实现您想要实现的目标。我的核心编码意味着我没有为管理员端实现auth componenet,而是为用户端实现了auth componenet。我的问题是,你发送的链接是我在管理端使用的简单seesions上的工作,你尝试了什么?有什么问题吗?另外,请阅读此处以了解如何正确格式化帖子。@EdCottrell您发送的链接基于laravel提供的auth componenet,但我已使用核心编码进行了登录注册。我不确定“核心编码”是什么意思,但您又尝试了什么?有很多合理的方法可以实现您想要实现的目标。我的核心编码意味着我没有为管理员端实现auth componenet,而是为用户端实现了auth componenet。我的问题是,你发送的链接是我在管理端使用的简单seesions上的工作,你错过了一件事。您没有将kernel.php中的admin定义为别名,您错过了一件事。您尚未在kernel.php中将admin定义为别名