登录注册 - 开箱即用

系统默认集成了登录注册和简易的权限管理系统

安装好以后即可直接使用

也是足够灵活扩展的

下面详细说明

需要给当前应用目录写入的权限;
例如是 admin 模块,就需要 给 project\app\admin\ 目录写入权限
数据库表结构
CREATE TABLE IF NOT EXISTS `manage` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` varchar(55) NOT NULL COMMENT '账号',
  `password` varchar(255) NOT NULL COMMENT '密码',
  `reg_time` int(10) UNSIGNED DEFAULT NULL COMMENT '注册时间',
  `last_login_time` int(10) UNSIGNED DEFAULT NULL COMMENT '最后登录时间',
  `user_role` text COMMENT '用户角色 数组序列化',
  PRIMARY KEY (`id`),
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

以上字段是必须的

业务上面有其他的需求,自己扩展数据字段就好了

如果一直提示验证码错误;
由于默认 session 是采用文件存储,session 是存储在 project\runtime\session 目录中; 所以需要 给 project\runtime\ 目录写入权限
控制器
#project\app\admin\controller\Login.php

namespace app\admin\controller;


/**
 * 登录注册相关路由控制器
 * 直接继承 \easyadmin\controller\Login
 * Class Login
 * @package app\admin\controller
 */
class Login extends \easyadmin\controller\Login
{
}

#--------------------------------------------------
#- 分割线 ------------------------------------------
#--------------------------------------------------

#project\app\admin\controller\Manage.php

namespace app\admin\controller;

 /**
 * 管理员列表相关路由控制器
 * 内部实现了增删改查,权限控制
 * 可直接在里面扩展自己的业务
 * Class Manage
 * @package app\admin\controller
 */
class Manage extends Admin
{
}

相关配置
#project\app\admin\config\login.php



// +----------------------------------------------------------------------
// | 登录注册相关配置
// +----------------------------------------------------------------------

return [

    // 开启登陆注册
    'enable_login'=> true ,

    // 数据库表名
    'table_name' => env('manage_table_name', 'manage'),

    // 是否开放注册
    'register' => env('manage_register', true),

    // 是否启用密码找回
    'find_password' => env('manage_find_password', true),

    // 密码加密的盐
    'crypt_salt' => env('manage_crypt_salt', 'easy_admin'),

    // 后台首页管理地址
    'home_url' => env('manage_home_url', '/admin/index/index'),

    // 后台登录地址
    'login_url' => env('manage_login_url', '/admin/login/login'),

    // 无权访问拦截地址
    'no_access_url' => env('manage_login_url', '/admin/login/no_access'),

    // 路由访问限制
    // 如果配置一个 空数组, 表示不验证权限,直接访问
    //
    // anonymous 表示可用匿名访问, 不登录
    // login     表示登录后可用访问
    // other     表示需要指定的权限可以访问 (直接写自己定义的权限名称)
    //
    'rules' => [
        '^/admin/*' => 'login',
        '^/admin/login/.*' => 'anonymous',

        // 为了方便演示,首页不用登录,其他页面都需要登录
        '^/admin/index/' => 'anonymous',

        // ... 其他路由规则
    ]

];
常用方法

// 判断当前登录用户是否有某一个权限
User::getInstance()->hasRole('role_super');

// 判断当前登录用户的全部权限
User::getInstance()->getRoles();

// 设置当前登录用户的权限 传递一个一维数组
User::getInstance()->setRoles($roles);

// 添加当前登录用户的权限 传递一个字符串
User::getInstance()->addRole($roles);

// 生成一个加密的密码
User::getInstance()->encrypt('登录账号', '登录密码');

// 保存用户信息到 缓存
User::getInstance()->save($user);

// 获取当前登录用户的用户ID
User::getInstance()->getUserId();

// 获取当前登录用户的全部信息
User::getInstance()->getUser();

// 清空当前登录用户的全部信息
User::getInstance()->clear();