zoukankan      html  css  js  c++  java
  • yii2-user

    https://github.com/dektrium/yii2-user

    安装 : composer require "dektrium/yii2-user:0.9.*@dev"

    配置 :  'modules' => [ 'user' => [ 'class' => 'dektriumuserModule', ], ], 添加到config/web.php

    注意  : 确保配置文件中没有别的 user 组件  如果 components 中有 user 的配置 注释掉

    如果你需要自定义组件  可以:

     'modules' => [
             'user' => [
                 'class' => 'appcompoentsUser',
                 'identityClass' => 'dektriumuserModelsUser',
            ],
     ],             

    生成数据库 : yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations

    migration,

    profile,

    social_account,

    token, user

    配置信息:

      enableFlashMessages 【默认为true】若为false 要自定义 提示信息 组件

      enableRegistration 【true】是否开启注册功能

      enableGeneratingPassword 【false】 不准用户自己输入密码 自动生成后通过邮件发送

      enableConfirmation【true】 是否 要邮件验证

      enableUnconfirmedLogin【false】邮件未验证 能不能登录

      enablePasswordRecovery 【true】 用户能不能找回密码

      emailChangeStrategy【STRATEGY_DEFAULT 】修改邮箱时 用那种策略:

        dektriumuserModule::STRATEGY_DEFAULT 发送给新的邮箱 并点击确认链接

        dektriumuserModule::STRATEGY_INSECURE 修改邮箱 不另行通知

        dektriumuserModule::STRATEGY_SECURE 发送给新的 和旧的邮箱 都要点击确认链接

       confirmWithin【86400(24小时)】令牌过期时间(秒)过期必须刷新页面

      rememberFor【1209600(两周)】 记住用户的过期时间时间(秒)

      recoverWithin【21600(6小时)】 在令牌过期前的规定时间内(秒) 要重新请求

      admins 【[]】 能操作 用户管理页面 的用户们的用户名列表

      adminPermission【null】 为用户指定RBAC权限的页面 最高权限 和 有此权限的用户可以操作

      cost 【10】 生成hash值参数的位数 位数越高越能防御暴力攻击

      urlPrefix  【user】 此模块的url前缀 如果设置为 auth ,auth/login, auth/admin, auth/register

      urlRules 【[]】 URL 管理规则 ???

    可用的动作:

    • /user/registration/register 注册表单
    • /user/registration/resend 发送表单
    • /user/registration/confirm 确认 (需要id and token 参数)
    • /user/security/login 登录表单
    • /user/security/logout 退出登录 (仅支持post)
    • /user/recovery/request ???
    • /user/recovery/reset 重置密码 (需要id and token 参数)
    • /user/settings/profile  个人资料设置??
    • /user/settings/account 账号设置 (email, username, password)
    • /user/settings/networks 第三方账号登录
    • /user/profile/show 显示用户头像?? (需要id 参数)
    • /user/admin/index 用户管理界面
    • /user/admin/create 创建用户
    •  /user/admin/update 修改用户
    • /user/admin/delete 删除用户

    你可以重写 类 和 添加 行为和事件处理程序:

    [
        ...
        'user' => [
            'class' => 'dektriumuserModule',
            'modelMap' => [
                'User' => [
                    'class' => 'appmodelsUser',
                    'on user_create_init' => function () {
                        // do you magic
                    },
                    'as foo' => [
                        'class' => 'Foo',
                    ],
                ],
            ],
        ],
        ...
    ]
    

     重写默认view:

     1 ...
     2 'components' => [
     3     'view' => [
     4         'theme' => [
     5             'pathMap' => [
     6                 '@dektrium/user/views' => '@app/views/user'
     7             ],
     8         ],
     9     ],
    10 ],
    11 ...

    重写控制器 和 使用事件:

     1 namespace appcontrollersuser;
     2 
     3 use dektriumusercontrollersAdminController as BaseAdminController;
     4 
     5 class AdminController extends BaseAdminController
     6 {
     7     public function actionCreate()
     8     {
     9         // do your magic
    10     }
    11 }
    12 ------------------------------------------------------------------
    13 ...
    14 'modules' => [
    15     ...
    16     'user' => [
    17         'class' => 'dektriumuserModule',
    18         'controllerMap' => [
    19             'admin' => 'appcontrollersuserAdminController'
    20         ],
    21         ...
    22     ],
    23     ...
    24 ],
    25 //重写控制器/方法
     1 'user' => [
     2     'class' => dektriumuserModule::className(),
     3     'controllerMap' => [
     4         'registration' => [
     5             'class' => dektriumusercontrollersRegistrationController::className(),
     6             'on ' . dektriumusercontrollersRegistrationController::EVENT_AFTER_REGISTER => function ($e) {
     7                 Yii::$app->response->redirect(array('/user/security/login'))->send();
     8                 Yii::$app->end();
     9             }
    10         ],
    11     ],
    12 ],
    // 注册之后 跳转到 登录页面 而不是仅仅提示信息

     改变后台管理用户页面的 布局(layout):

     1 'modules' => [
     2     ...
     3     'user' => [
     4         'class' => 'dektriumuserModule',
     5         'controllerMap' => [
     6             'admin' => [
     7                 'class'  => 'appcontrollersuserAdminController',
     8                 'layout' => 'path-to-your-admin-layout',
     9             ],
    10         ],
    11         ...
    12     ],
    13     ...
    14 ],

    使用第三方登录:

    'components' => [
      'authClientCollection' => [
          'class' => yiiauthclientCollection::className(),
          'clients' => [
              'facebook' => [
                  'class'        => 'dektriumuserclientsFacebook',
                  'clientId'     => 'CLIENT_ID',
                  'clientSecret' => 'CLIENT_SECRET',
              ],
              'twitter' => [
                  'class'          => 'dektriumuserclientsTwitter',
                  'consumerKey'    => 'CONSUMER_KEY',
                  'consumerSecret' => 'CONSUMER_SECRET',
              ],
              'google' => [
                  'class'        => 'dektriumuserclientsGoogle',
                  'clientId'     => 'CLIENT_ID',
                  'clientSecret' => 'CLIENT_SECRET',
              ],
          ],
      ],
    ],

    facebook 获取的用户信息 补充到用户信息实例

    use dektriumusercontrollersSecurityController; 
    
    Event::on(SecurityController::class, SecurityController::EVENT_AFTER_AUTHENTICATE, function (AuthEvent $e) {
        //如果用户不存在
        if ($e->account->user === null) {
            return;
        }
    
        // 不同的第三方平台提供的信息不 一样
        switch ($e->client->getName()) {
            case 'facebook':
                $e->account->user->profile->updateAttributes([
                    'name' => $e->client->getUserAttributes()['name'],
                ]);
            case 'vkontakte':
                // some different logic
        }
    
        // 保存所有第三方用户属性到 model 下
        // Yii::$app->identity->user->accounts['facebook']->decodedData
    });

    其他的功能 如:

    自定义邮件发送类型 添加验证码 用户扩展字段 注册时填写更多信息等 下次分解

  • 相关阅读:
    git 命令手册
    leetcode #7 revert integer 问题
    leetcode #1 twoSum问题:简单实用哈希表
    c++模板函数分离编译的问题
    matlab 与c/c++ 混合MEX的编程
    springboot项目打war包
    springboot-jpa多数据源
    springboot使用RestTemplate+httpclient连接池发送http消息
    IDEA如何安装lombok
    Springboot如何启用文件上传功能
  • 原文地址:https://www.cnblogs.com/cgjcgs/p/5343965.html
Copyright © 2011-2022 走看看