Php 如何在laravel中禁用特定用户的url?
我有一个admins表,它有一些列,如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
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定义为别名