写一个thinkphp6.0使用AdminAuth中间件的案例
时间: 2024-05-09 18:20:55 浏览: 184
假设我们有一个后台管理系统,需要对管理员进行登录验证和权限验证,我们可以使用thinkphp6.0的AdminAuth中间件来实现。
首先,我们需要在config/middleware.php中注册AdminAuth中间件:
```php
return [
// 注册AdminAuth中间件
'admin_auth' => app\middleware\AdminAuth::class,
];
```
然后,在需要进行登录验证和权限验证的控制器中使用AdminAuth中间件:
```php
namespace app\admin\controller;
use think\Controller;
use think\facade\Session;
class Index extends Controller
{
// 使用AdminAuth中间件进行登录验证和权限验证
protected $middleware = ['admin_auth'];
public function index()
{
// 获取当前管理员信息
$admin = Session::get('admin');
// 显示后台首页
return $this->fetch('index', ['admin' => $admin]);
}
}
```
在AdminAuth中间件中,我们可以通过判断Session中是否存在管理员信息来进行登录验证,如果不存在,则跳转到登录页面;如果存在,则根据管理员角色来进行权限验证,如果没有权限,则跳转到无权限提示页面。
```php
namespace app\middleware;
use think\facade\Session;
class AdminAuth
{
public function handle($request, \Closure $next)
{
// 判断是否登录
if (!Session::has('admin')) {
// 跳转到登录页面
return redirect('/admin/login');
}
// 获取当前管理员信息
$admin = Session::get('admin');
// 判断是否有权限访问当前页面
if (!$this->checkPermission($admin)) {
// 跳转到无权限提示页面
return redirect('/admin/no_permission');
}
// 继续执行下一个中间件或控制器
return $next($request);
}
// 根据管理员角色来判断是否有权限访问当前页面
protected function checkPermission($admin)
{
// 管理员角色为1表示超级管理员,拥有所有权限
if ($admin['role'] == 1) {
return true;
}
// 其他角色暂不实现权限管理,都具有访问权限
return true;
}
}
```
这样,我们就可以使用AdminAuth中间件来进行管理员登录验证和权限验证了。
阅读全文