【ThinkPHP8 】角色权限管理系统设计 实现代码

该文章已生成可运行项目,

系统功能说明

这个角色权限管理系统实现了以下核心功能:

1、用户 - 角色 - 权限三级架构:

  • 一个用户可以拥有多个角色
  • 一个角色可以拥有多个权限
  • 权限可以有父子关系,形成权限树

2、权限验证机制:

  • 通过中间件实现权限检
  • 支持在路由中指定所需权限
  • 提供服务类方便在代码中检查权限

3、管理功能:

  • 用户管理:查看用户列表、分配角色
  • 角色管理:查看角色列表、分配权限
  • 权限管理:查看权限树结构

使用方法

首先执行提供的 SQL 脚本创建数据库表并插入测试数据
将代码文件放入 ThinkPHP8 项目对应目录
访问系统,使用以下测试账号登录:	
 1. 管理员:admin/123456 	
 2. 编辑:editor/123456 	
 3. 访客:viewer/123456

ThinkPHP8 实现代码

下面是完整的角色权限管理系统实现,包括模型、控制器、中间件和服务类

在这里插入图片描述

文件 \app\controller\AuthController.php

<?php
namespace app\controller;
// 文件目录 \app\controller\AuthController.php
use app\model\Permission;
use app\model\Role;
use app\model\User;
use app\service\AuthService;
use think\facade\View;
use think\Request;

class AuthController extends BaseController
{
   
   
    protected $authService;
    
    public function __construct(AuthService $authService)
    {
   
   
        $this->authService = $authService;
    }
    
    /**
     * 登录页面
     */
    public function login()
    {
   
   
        if ($this->authService->getUserInfo()) {
   
   
            return redirect((string)url('/dashboard'));
        }
        
        return View::fetch();
    }
    
    /**
     * 处理登录请求
     */
    public function doLogin(Request $request)
    {
   
   
        $username = $request->post('username');
        $password = $request->post('password');
        
        if ($this->authService->login($username, $password)) {
   
   
            return redirect((string)url('/dashboard'))->with('success', '登录成功');
        }
        
        return redirect((string)url('/login'))->with('error', '用户名或密码错误');
    }
    
    /**
     * 退出登录
     */
    public function logout()
    {
   
   
        $this->authService->logout();
        return redirect((string)url('/login'))->with('success', '退出成功');
    }
    
    /**
     * 用户列表
     */
    public function userList()
    {
   
   
        $users = User::with('roles')->paginate(10);
        View::assign('users', $users);
        return View::fetch();
    }
    
    /**
     * 角色列表
     */
    public function roleList()
    {
   
   
        $roles = Role::with('permissions')->paginate(10);
        View::assign('roles', $roles);
        return View::fetch();
    }
    
    /**
     * 权限列表
     */
    public function permissionList()
    {
   
   
        $permissions = Permission::getPermissionTree();
        View::assign('permissions', $permissions);
        return View::fetch();
    }
    
    /**
     * 分配用户角色
     */
    public function assignUserRoles(Request $request)
    {
   
   
        $userId = $request->post('user_id');
        $roleIds = $request->pos
本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值