zizaco/confide-mongo

Confide Mongo 是一个针对 Laravel 4 的身份验证解决方案,使用 mongolid-laravel。

v1.0.1 2020-12-03 21:30 UTC

README

Confide Poster

Build Status ProjectStatus

Confide 是一个针对 Laravel4 的身份验证解决方案,使用 MongoLid 制作,旨在消除涉及用户管理的重复性任务:账户创建、登录、登出、电子邮件确认、密码重置等。

Confide 旨在使用简单、配置快速和灵活。

注意:如果您 没有 使用 MongoDB,请检查 Confide

功能

当前

  • 账户确认(通过确认链接)。
  • 密码重置(通过发送带有更改密码链接的电子邮件)。
  • 轻松渲染登录、注册和密码重置的表单。
  • 生成可定制的登录、注册、密码重置、确认等路由。
  • 生成一个可定制的控制器,用于处理基本用户账户操作。
  • 包含一组帮助基本用户功能的方法。
  • 与 Laravel Auth 组件/配置集成。
  • 字段/模型验证。
  • 登录节流。
  • 认证后重定向到之前的路由。

如果您正在寻找用户角色和权限,请查看 Entrust

计划

  • 用户注册和密码重置中的验证码。
  • 一般改进。

快速入门

所需设置

composer.json 文件的 require 键中添加以下内容

"zizaco/confide-mongo": "dev-master"

运行 Composer 更新命令

$ composer update

在您的 config/app.php 中,将 'Zizaco\ConfideMongo\ConfideMongoServiceProvider' 添加到 $providers 数组的末尾

'providers' => array(

    'Illuminate\Foundation\Providers\ArtisanServiceProvider',
    'Illuminate\Auth\AuthServiceProvider',
    ...
    'Zizaco\ConfideMongo\ConfideMongoServiceProvider',

),

config/app.php 的末尾添加 'Confide' => 'Zizaco\Confide\ConfideFacade'$aliases 数组中

'aliases' => array(

    'App'        => 'Illuminate\Support\Facades\App',
    'Artisan'    => 'Illuminate\Support\Facades\Artisan',
    ...
    'Confide'    => 'Zizaco\Confide\ConfideFacade',

),

配置

MongoLid 身份验证 中所述,在 config/auth.php 中将驱动程序设置为 "mongoLid"

    ...

    'driver' => 'mongoLid',
    
    ...

config/auth.php 中包含的这些值将被 Confide Mongo 用于生成控制器和路由。

config/mail.php 中设置 from 数组中的 addressname。这些将被用于向用户发送账户确认和密码重置电子邮件。

用户模型

将您的 app/models/User.php 中的 User 模型更改为

<?php

use Zizaco\ConfideMongo\ConfideMongoUser;

class User extends ConfideMongoUser {

}

ConfideMongoUser 类将处理用户模型的一些行为。

删除默认访问器

至少,您可以删除默认控制器和 Confide 的默认路由。

$ php artisan confide:controller
$ php artisan confide:routes

不要忘记删除 composer 自动加载

$ composer dump-autoload

然后您就可以开始了。 访问 http://yourapp/user/create 创建您的第一个用户。检查 app/routes.php 以查看可用路由。

详细使用说明

基本设置

  1. config/database.php 中运行正常的 MongoDB 数据库连接。
  2. config/auth.php 中将身份验证驱动程序设置为 "mongoLid"
  3. 检查并纠正 config/auth.php 中的模型和集合名称。Confide 将始终使用它们。
  4. config/mail.php 中的 from 配置。

配置

  1. config/app.php 中,在 'providers''aliases' 中分别添加 ConfideMongoServiceProviderConfideFacade
  2. 用户模型(与 config/auth.php 中的名称相同)应扩展 ConfideMongoUser 类。这将导致方法如 resetPassword()confirm() 和重载的 save() 可用。

可选步骤

  1. 使用Confide门面,通过makeLoginForm()makeSignupForm()轻松地将登录和注册表单导出。您可以通过在视图中执行{{ Confide::makeLoginForm()->render() }}来渲染表单。
  2. 通过 artisan 命令$ php artisan confide:controller生成包含在 Confide 中的控制器模板。如果已存在同名控制器,它将不会被覆盖。
  3. 通过 artisan 命令$ php artisan confide:routes生成与控制器模板匹配的路由。您的routes.php不会被覆盖。

高级

使用自定义集合/模型名称

您可以在config/auth.php文件中更改将要进行验证的模型名称。Confide 使用该配置文件中存在的值。

要更改导出默认控制器模板时的控制器名称,可以使用--name选项。

$ php artisan confide:controller --name Employee

将生成EmployeeController

然后,在导出路由时,您应该使用--controller选项来匹配现有控制器。

$ php artisan confide:routes --controller Employee

使用自定义表单或电子邮件

首先,发布配置文件

$ php artisan config:publish zizaco/confide

然后编辑app/config/packages/zizaco/confide/config.php中的视图名称。

更新用户

要更新数据库中已有的用户,您可以选择传递不同的规则集或使用amend函数。

$user = new User;
$user->username = 'newUserName';

// Save
$user->save($this->getUpdateRules());

验证模型字段

要更改用户模型的验证规则,请查看Laravel 4 验证。例如

<?php

use Zizaco\ConfideMongo\ConfideMongoUser;

class User extends ConfideMongoUser {

    /**
     * Validation rules
     */
    public static $rules = array(
        'email' => 'required|email',
        'password' => 'required|between:4,11|confirmed',
    );

}

您可以在您的集合和验证数组中添加更多字段。然后,您应该构建包含额外字段的自己的注册表单。

将附加信息传递给make方法

如果您想向表单传递额外的参数,您可以使用不同的语法来实现这一点。

而不是使用make方法

Confide::makeResetPasswordForm( $token ):

您将使用

View::make(Config::get('confide::reset_password_form'))
    ->with('token', $token);

它会产生相同的输出,但您将能够像其他视图一样使用 'with' 添加更多输入。

RESTful控制器

如果您想生成RESTful控制器,您可以使用额外的--restful-r选项。

$ php artisan confide:controller --restful

将生成RESTful控制器

然后,在导出路由时,您应该使用--restful选项来匹配现有控制器。

$ php artisan confide:routes --restful

用户角色和权限

为了不让 Confide 堆积与无关的特性,角色和权限作为另一个包开发: Entrust。此包非常适合与 Confide 配合使用。

查看Entrust

注意:Entrust 还不支持 MongoLid / MongoDB

登录后重定向到上一个路由

当定义您的过滤器时,应设置'loginRedirect'会话变量。例如

// filters.php

Route::filter('auth', function()
{
    if ( Auth::guest() ) // If the user is not logged in
    {
        // Set the loginRedirect session variable
        Session::put( 'loginRedirect', Request::url() );

        // Redirect back to user login
        return Redirect::to( 'user/login' );
    }
});

// Only authenticated users will be able to access routes that begins with
// 'admin'. Ex: 'admin/posts', 'admin/categories'.
Route::when('admin*', 'auth'); 

或者,如果您正在使用Entrust ;)

// filters.php

Entrust::routeNeedsRole( 'admin*', 'Admin', function(){
    Session::put( 'loginRedirect', Request::url() );
    return Redirect::to( 'user/login' );
} );

验证路由

如果您想验证路由是否存在,Confide::checkAction函数就是您要找的。

目前它用于视图来确定非RESTful与RESTful路由。

故障排除

创建用户时出现"‘confirmation_code’必需"错误

如果您在模型中覆盖了save()方法,请确保调用parent::save()

public function save( $forced = false ){

    parent::save( $forced) // Don't forget this

    // Your stuff
}

当用户注册时,确认链接没有被发送

如果您在模型中覆盖了afterSave()方法,请确保调用parent::afterSave()

用户能够登录而无需确认账户

如果您只想让已确认的用户登录,在您的UserController中,您应该调用logAttempt( $input, true )而不是简单地调用logAttempt( $input )。第二个参数代表"confirmed_only"

许可证

Confide 是免费软件,遵循 MIT 许可协议分发

更多信息

如有任何疑问,请随时联系我或在这里提问

如有任何问题,请在此处报告