lylovefl Back-End Dev Engineer

基于Yii2的用户模块Yii2-user详解

2017-06-17
php
 

在我们开发网站的过程,用户的登录,注册,密码忘记和修改等想通的操作基本都会涉及,在Yii框架中,Yii2-user提供了这方法,下面详细介绍Yii2-user的安装和使用。

Yii2-user安装使用教程

1. 准备工作

yii2-user使用composer安装,国内的网络很难安装上composer,具体查看 Composer下载Composer中国镜像安装方法

2. 下载安装Yii2-user

命令行下执行: composer require dektrium/yii2-user

3. 配置Yii2-user

基础版

在在main.php配置文件里面加入:


'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
    ],
],
高级版

1.修改公共配置main.php文件@common/config/main.php:


'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
        // you will configure your module inside this file
        // or if need different configuration for frontend and backend you may
        // configure in needed configs
    ],
],

2.修改frontend的main.php文件@frontend/config/main.php


'modules' => [
    'user' => [
        // following line will restrict access to admin controller from frontend application
        'as frontend' => 'dektrium\user\filters\FrontendFilter',
    ],
],

3.修改backend的mian.php文件@backend/config/main.php


'modules' => [
    'user' => [
        // following line will restrict access to profile, recovery, registration and settings controllers from backend
        'as backend' => 'dektrium\user\filters\BackendFilter',
    ],
],

4.不要忘记注释前台和后台的user组件,如下:


'components' => [
        ...
        /*'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
        ],*/
        ...
    ],

5.前后端使用不同的sessions

当我们想前后端的session分开时,可以使用如下配置

修改前端main.php


'components' => [
    'user' => [
        'identityCookie' => [
            'name'     => '_frontendIdentity',
            'path'     => '/',
            'httpOnly' => true,
        ],
    ],
    'session' => [
        'name' => 'FRONTENDSESSID',
        'cookieParams' => [
            'httpOnly' => true,
            'path'     => '/',
        ],
    ],
],

修改后端main.php


'components' => [
    'user' => [
        'identityCookie' => [
            'name'     => '_backendIdentity',
            'path'     => '/admin',
            'httpOnly' => true,
        ],
    ],
    'session' => [
        'name' => 'BACKENDSESSID',
        'cookieParams' => [
            'httpOnly' => true,
            'path'     => '/admin',
        ],
    ],
],

6.配置邮箱 在main.php里面添加配置:


'components' => [
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@app/mailer',
            'useFileTransport' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.163.com',
                'username' => '1212121@163.com',
                'password' => '1212121',
                'port' => '25',
                'encryption' => 'tls',
            ],
        ],
],

4.更新数据库

在确认好数据库可以连接的情况下,执行如下命令:

$ php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations

5.开始使用Yii2-user

以上配置好后,我们就可以使用Yii2-user的丰富功能了,Yii2-user主要提供如下功能:

  • /user/registration/register 用户注册
  • /user/registration/resend 重新发送邮件
  • /user/registration/confirm 注册用户确认
  • /user/security/login 用户登录
  • /user/security/logout 用户登出
  • /user/recovery/request 找回密码请求
  • /user/recovery/reset 重置密码
  • /user/settings/profile 用户信息编辑
  • /user/settings/account 账户设置(email,用户名,密码)

这些只是常用的几个功能,yii2-user远不止这些。具体参考Yii2-user文档


Comments