drecon/confide

Confide 是 Laravel 4 的认证解决方案

维护者

详细信息

github.com/drecon/confide

源代码

安装: 12

依赖: 0

建议: 0

安全: 0

星标: 0

关注者: 2

分支: 258

3.2.3 2014-04-16 10:06 UTC

README

Confide Poster

Build Status ProjectStatus

Confide 是一个为 Laravel4 设计的认证解决方案,旨在消除与用户管理相关的重复性任务:账户创建、登录、登出、电子邮件确认、密码重置等。

Confide 旨在使用简单、配置快捷且灵活。

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

功能

当前

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

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

有关 MongoDB 支持,请参阅 Confide Mongo

计划

  • 在用户注册和密码重置中添加验证码。

警告

默认情况下,会发送确认电子邮件,并要求用户确认电子邮件地址。您可以在 confide 配置文件中轻松更改此设置。如果不想发送电子邮件,并且用户不需要确认即可登录网站,请将 signup_email 和 signup_confirm 更改为 false。

快速入门

所需设置

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

"zizaco/confide": "3.2.x"

运行 Composer 更新命令

$ composer update

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

'providers' => array(

    'Illuminate\Foundation\Providers\ArtisanServiceProvider',
    'Illuminate\Auth\AuthServiceProvider',
    ...
    'Zizaco\Confide\ConfideServiceProvider',

),

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

'aliases' => array(

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

),

配置

将正确值设置到 config/auth.php 中。这些值将被 confide 用于生成数据库迁移以及生成控制器和路由。

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

用户模型

现在生成 Confide 迁移和密码重置提醒表迁移

$ php artisan confide:migration

它将生成 <timestamp>_confide_setup_users_table.php 迁移。您现在可以使用 artisan migrate 命令运行它

$ php artisan migrate

它将设置一个包含 emailpasswordconfirmation_codeconfirmed 字段的表,这是 Confide 使用所需的默认字段。您可以根据需要添加更多字段到数据库中。

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

<?php

use Zizaco\Confide\ConfideUser;

class User extends ConfideUser {

}

ConfideUser 类将处理用户模型的某些行为。

导出默认访问器

最后,您可以导出 Confide 的默认控制器和默认路由。

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

别忘了导出 composer 自动加载

$ composer dump-autoload

您已经准备好出发了。 访问 http://yourapp/user/create 创建您的第一个用户。检查 app/routes.php 以查看可用的路由。

详细用法

基本设置

  1. config/database.php 中的数据库连接运行正常。
  2. config/auth.php 中的正确模型和表名。Confide 将始终使用这些。
  3. config/mail.php 中的 from 配置。

配置

  1. config/app.php 中的 'providers''aliases' 分别为 ConfideServiceProviderConfideFacade 的入口。
  2. 用户模型(与 config/auth.php 中的名称相同)应扩展 ConfideUser 类。这将导致如 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 中的视图名称。

更新用户

要更新数据库中已有的用户,您需要确保您的规则集在用户模型中使用了唯一验证器。

<?php

use Zizaco\Confide\ConfideUser;

class User extends ConfideUser {

public static $rules = array(
    'username' => 'unique:users,username',
    'email' => 'email'
);

?>

<?php 

class UserController extends Controller {

    public function postCreate() {

        // In real usage you'll need to find the user that is being modified.
        // 1 is set just as an example.
        $user = User::find(1);
    
        // Update a user attribute from a form.
        // Using email as an example.
        $user->email = Input::get('email'); 
    
        // Save
        // This was previously update, but Ardent changed.
        $user->updateUniques(); 
  
    }
}

?>

这将允许您更新当前用户。

验证模型字段

要更改用户模型的验证规则,您可以查看 Ardent。例如

<?php

use Zizaco\Confide\ConfideUser;

class User extends ConfideUser {

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

}

请随意添加更多字段到您的表和验证数组中。然后,您应该构建包含附加字段的自己的注册表单。

注意:如果您像上面那样在模型中添加字段到验证规则中,请不要忘记您必须将这些字段添加到 UserController 的 store 函数中。如果您忘记这一点,表单将始终返回错误。例如:$user->terms = Input::get('terms');

向 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

登录后重定向到上一路由

在定义过滤器时,你应该在auth过滤器中使用Redirect::guest('user/login')。例如

// filters.php

Route::filter('auth', function()
{
    if ( Auth::guest() ) // If the user is not logged in
    {
        return Redirect::guest('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(){
        return Redirect::guest('user/login');
} );

最后,如果你的控制器中的user/login函数在成功登录后使用Redirect::intended('a/default/url/here')进行自动跳转。生成的控制器正是这样做。

验证路由

如果你想验证一个路由是否存在,你需要寻找Confide::checkAction这个函数。

目前它被用于视图中以确定非RESTful路由与RESTful路由。

故障排除

[异常] SQLSTATE[HY000]: 通用错误:1364 字段 'confirmation_code' 没有默认值...

如果你重写了模型中的beforeSave()方法,确保调用parent::beforeSave()

public function beforeSave( $forced = false ){

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

    // Your stuff
}

用户注册时未发送确认链接

与上面相同。如果你重写了模型中的afterSave()方法,确保调用parent::afterSave()

用户可以不确认账户就登录

如果你想只允许已确认的用户登录,在你的UserController中,不要仅仅调用logAttempt($input),而是调用logAttempt($input, true)。第二个参数代表"仅限已确认的用户"

发布说明

版本 3.0.0

更新以支持Laravel 4.1

版本 2.0.0 测试版 4

移除了已弃用的变量和函数。

  • $updateRules
  • amend()
  • generateUuid
  • getUpdateRules
  • prepareRules
  • getRules
  • setUpdateRules
  • getUserFromCredsIdentity
  • checkUserExists
  • isConfirmed

添加了两个配置值

  • login_cache_field (#161)
  • throttle_time_period (#162)

版本 2.0.0 测试版 3

更新说明

版本 2.0.0 测试版 2

合并了一些pull请求,并锁定到Ardent 2.1.x

  • 正确处理了验证消息 (#124)
  • 在real_save中正确进行了验证 (#110)
  • 使用Redirect::guest而不是自定义会话变量来处理认证跳转 (#145)
  • 解决了暴力破解漏洞 (#151)

版本 2.0.0 测试版 2

锁定到Ardent 1.1.x

版本 1.1.0

许可证

Confide是在MIT许可证下分发的免费软件

附加信息

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

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