mdsys / 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
This package is not auto-updated.
Last update: 2024-09-28 14:44:22 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 使用所需的默认字段。您可以根据需要向数据库添加更多字段。
将您的 User 模型在 app/models/User.php
中修改为
<?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 )。第二个参数代表 "confirmed_only"。
版本发布说明
版本 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
更新 Readme
版本 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 许可证条款下分发的免费软件
附加信息
如有任何问题,请随时联系我或在 此处 提问
如有任何问题,请 在此处 报告