drecon / confide
Confide 是 Laravel 4 的认证解决方案
Requires
- php: >=5.3.0
- illuminate/support: ~4.1
- laravelbook/ardent: dev-master
Requires (Dev)
- illuminate/auth: ~4.1
- illuminate/database: ~4.1
- mockery/mockery: 0.7.2
Suggests
- zizaco/entrust: add Role-based Permissions to Laravel 4
- dev-master
- 3.2.3
- 3.2.3b
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- 2.0.0b4
- 2.0.0b3
- 2.0.0b2
- 2.0.0.b1
- 2.0.0a1
- v1.1.0
- v1.0.1
- v1.0.0
- v0.11beta
- v0.10beta
- v0.9beta
- v0.8.6beta
- v0.8.5beta
- v0.8beta
- v0.7.7beta
- v0.7.6beta
- v0.7.5beta
- v0.7.1beta
- v0.7beta
- v0.6.2beta
- v0.6.1beta
- v0.6beta
- v0.5.1beta
- v0.5beta
- v0.4.1beta
- v0.4beta
- v0.3beta
- v0.2beta
- dev-huge-update
- dev-develop
This package is not auto-updated.
Last update: 2024-09-24 07:22:08 UTC
README
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 数组中设置 address 和 name。这些值将用于向用户发送账户确认和密码重置电子邮件。
用户模型
现在生成 Confide 迁移和密码重置提醒表迁移
$ php artisan confide:migration
它将生成 <timestamp>_confide_setup_users_table.php 迁移。您现在可以使用 artisan migrate 命令运行它
$ php artisan migrate
它将设置一个包含 email、password、confirmation_code 和 confirmed 字段的表,这是 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 以查看可用的路由。
详细用法
基本设置
config/database.php中的数据库连接运行正常。config/auth.php中的正确模型和表名。Confide 将始终使用这些。config/mail.php中的from配置。
配置
config/app.php中的'providers'和'aliases'分别为ConfideServiceProvider和ConfideFacade的入口。- 用户模型(与
config/auth.php中的名称相同)应扩展ConfideUser类。这将导致如resetPassword()、confirm()和重载的save()等方法可用。
可选步骤
- 使用
Confide门面通过makeLoginForm()和makeSignupForm()轻松生成登录和注册表单。您可以通过执行{{ Confide::makeLoginForm()->render() }}在您的视图中渲染表单。 - 使用 artisan 命令
$ php artisan confide:controller生成包含 Confide 模板的控制器。如果存在同名的控制器,它将 不会 被覆盖。 - 使用 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许可证下分发的免费软件
附加信息
有任何问题,请随时联系我或在这里提问
如有任何问题,请在此处报告