kiwing-it / confide-doctrine
Confide是Laravel 4的认证解决方案。这个分支实现了针对doctrine的confide。
Requires
- php: >=5.4.0
- illuminate/support: ~4.2|~5.0
Requires (Dev)
- illuminate/auth: ~4.2
- illuminate/console: ~4.2
- illuminate/database: ~4.2
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0
- satooshi/php-coveralls: ~0.6
Suggests
- zizaco/entrust: add Role-based Permissions to Laravel 4
- 4.1.1
- 4.1.0
- dev-master / 4.0.x-dev
- 4.0.0
- 4.0.0-rc.2
- 4.0.0-rc.1
- 4.0.0-beta.3
- 4.0.0-beta.2
- 4.0.0-beta.1
- 3.2.x-dev
- 3.2.5
- 3.2.4
- 3.2.3
- 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-package-dev
- dev-avoid_testing_until_a_few_corrections
- dev-laravel-doctrine_dev_support
- dev-config_user_model
- dev-username-optional
This package is not auto-updated.
Last update: 2024-09-25 13:54:24 UTC
README
正在开发中。请勿使用!
Confide (Laravel4软件包)
Confide是Laravel的认证解决方案,旨在减少涉及用户管理的重复工作。对账户创建、登录、登出、电子邮件确认、密码重置等功能的DRY(不要重复自己)方法。
Confide旨在简单易用,快速配置,灵活。
注意:如果您使用MongoDB,请查看Confide Mongo。
功能
当前
- 账户确认(通过确认链接)。
- 密码重置(发送带有更改密码链接的电子邮件)。
- 轻松渲染登录、注册和密码重置的表单。
- 生成登录、注册、密码重置、确认等路由。
- 生成可自定义的控制器,用于处理基本用户账户操作。
- 包含一组帮助实现基本用户功能的方法。
- 与Laravel的Auth和Reminders组件/配置集成。
- 用户验证。
- 登录限制。
- 认证后重定向到之前的路由。
- 在注册时检查唯一电子邮件和用户名。
如果您正在寻找用户角色和权限,请查看Entrust
有关MongoDB支持,请查看Confide Mongo
警告: 默认情况下会发送确认电子邮件,并要求用户确认电子邮件地址。您可以在confide配置文件中轻松更改此设置。将signup_email
和signup_confirm
更改为false,如果您不想发送电子邮件,并且用户不需要确认就可以登录网站。
快速入门
必需设置
在composer.json
文件的require
键中添加以下内容
"zizaco/confide": "~4.0@dev"
运行Composer更新命令
$ composer update
在您的config/app.php
中,将'Zizaco\Confide\ServiceProvider'
添加到providers
数组末尾
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Zizaco\Confide\ServiceProvider',
),
在config/app.php
的末尾,将'Confide' => 'Zizaco\Confide\Facade'
添加到aliases
数组
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
...
'Confide' => 'Zizaco\Confide\Facade',
),
配置
将适当的值设置到config/auth.php
中。这些值将由confide用于生成数据库迁移以及生成控制器和路由。
设置config/mail.php
中from
数组中的address
和name
。这些将用于向用户发送账户确认和密码重置电子邮件。
用户模型
现在生成Confide迁移和密码重置提醒表迁移
$ php artisan confide:migration
它将生成<timestamp>_confide_setup_users_table.php
迁移。您现在可以使用Artisan迁移命令运行它
$ php artisan migrate
它将设置一个包含email
、password
、remember_token
、confirmation_code
和confirmed
列的表,这些是Confide使用所需默认字段。您可以在以后自由添加更多列到表中。
将您的User模型在app/models/User.php
中更改为
<?php
use Zizaco\Confide\ConfideUser;
use Zizaco\Confide\ConfideUserInterface;
class User extends Eloquent implements ConfideUserInterface
{
use ConfideUser;
}
ConfideUser
特质将处理用户模型的某些行为。
导出默认访问器
最后,您可以导出Confide的默认控制器、存储库和默认路由。
$ php artisan confide:controller
$ php artisan confide:routes
别忘了导出composer自动加载
$ composer dump-autoload
现在您可以开始使用了。 访问 http://yourapp/users/create
来创建您的第一个用户。检查 app/routes.php
来查看可用的路由。您可能需要确认新创建的用户 (通过调用其 confirm()
方法),否则您可以在配置文件中禁用确认作为登录要求(见下文)。
详细用法
基本设置
config/database.php
中的数据库连接运行正常。config/auth.php
中的正确模型和表名。Confide 将会一直使用这些值(特别是当生成迁移和控制器时)。config/mail.php
中的from
配置。
配置
- 在
config/app.php
中的'providers'
和'aliases'
分别有'Zizaco\Confide\ServiceProvider'
和'Confide' => 'Zizaco\Confide\Facade'
的条目。 - 用户模型(与
config/auth.php
中的名称相同)应该实现Zizaco\Confide\ConfideUserInterface
接口。这将使forgotPassword()
和confirm()
等方法可用。
可选步骤
- 可选地,您可以在用户模型中使用
Zizaco\Confide\ConfideUser
特性。这将节省大量时间,并使用“confide的默认”实现来处理用户。如果您希望进行更多定制,可以编写自己的代码。 - 使用
Confide
门面通过makeLoginForm()
和makeSignupForm()
简单地输出登录和注册表单。您可以通过执行{{ Confide::makeLoginForm()->render() }}
在您的视图中呈现表单。 - 使用 artisan 命令
$ php artisan confide:controller
通过 Confide 模板生成一个 控制器 和一个 仓库。如果存在同名控制器,它将 不会 被覆盖。 - 使用 artisan 命令
$ php artisan confide:routes
生成匹配控制器模板的路由。别担心,您的routes.php
将 不会 被覆盖。
高级
UserRepository
类
您可能已经注意到,当生成控制器时,还创建了一个 UserRepository
类。此类包含一些不属于“控制器”目的的代码,这将使您的用户控制器更加清晰和可测试。如果您仍然不知道这个类为什么存在,我建议您在 Google 上搜索 "Creating flexible Controllers in Laravel 4 using Repositories"。 (眨眼)
使用自定义类、表或模型名称
您可以在 config/auth.php
文件中更改被视为用户的模型名称。Confide 使用该配置文件中的值。
要更改生成默认控制器模板时的控制器名称,可以使用 --name
选项。
$ php artisan confide:controller --name=Employee
这将生成 EmployeeController
然后,当生成路由时,您应该使用 --controller
选项来匹配现有的控制器。
$ php artisan confide:routes --controller=Employee
您还可以生成具有命名空间的控制器
$ php artisan confide:controller --name=MyProject\\Auth\\User
警告:在 bash 中,您将需要使用双反斜杠。这将生成 MyProject\Auth\UserController
。此外,生成的文件将位于与命名空间等效的目录中。(眨眼)
使用自定义表单或电子邮件
首先,发布配置文件
$ php artisan config:publish zizaco/confide
然后编辑 app/config/packages/zizaco/confide/config.php
中的视图名称。
播种
要播种您的用户表,您还应该填写 password_confirmation
和 confirmation_code
字段。例如
class UsersTableSeeder extends Seeder {
public function run()
{
$user = new User;
$user->username = 'johndoe';
$user->email = 'johndoe@site.dev';
$user->password = 'foo_bar_1234';
$user->password_confirmation = 'foo_bar_1234';
$user->confirmation_code = md5(uniqid(mt_rand(), true));
if(! $user->save()) {
Log::info('Unable to create user '.$user->getUsername(), (array)$user->errors());
} else {
Log::info('Created user "'.$user->getUsername().'" <'.$user->getEmail().'>');
}
}
}
自定义用户验证
您可以通过创建一个实现 UserValidatorInterface
的类并注册该类为 "confide.user_validator" 来实现自己的验证器。
例如,创建您的自定义验证器类
// app/models/MyOwnValidator.php
class MyOwnValidator implements UserValidatorInterface
{
public function validate(ConfideUserInterface $user)
{
unset($user->getPasswordConfirmation());
return true; // If the user valid
}
}
然后在 IoC 容器中注册它为 "confide.user_validator"
// app/start/global.php
...
App::bind('confide.user_validator', 'MyOwnValidator');
此外,别忘了您的验证器在保存用户之前应该取消设置 'password_confirmation' 属性。
向“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。Entrust 与 Confide 配合得很好。
见 Entrust
登录后重定向到之前的路由
在定义您的过滤器时,应在您的 auth 过滤器中使用 Redirect::guest('users/login')。例如
// filters.php
Route::filter('auth', function () {
// If the user is not logged in
if (Auth::guest()) {
return Redirect::guest('users/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('users/login');
});
最后,如果您的控制器中的 users/login 函数在成功登录后使用 Redirect::intended('a/default/url/here') 进行自动重定向。生成的控制器正是这样做的。
故障排除
[2014-07-18 01:13:15] production.ERROR: 异常 'Illuminate\Database\QueryException',消息 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'password_confirmation' in 'field list' (SQL: insert into `users` ...
在对象被发送到数据库之前,应该从对象中删除 password_confirmation
属性。确保您的用户模型实现了 ConfideUserInterface
并使用 ConfideUser
特性 如上所述。否则,如果您正在使用自定义验证器,您将需要在保存用户之前取消设置 password_confirmation
。
当尝试登录时,我收到 "您的账户可能未确认" 的消息
您需要确认新创建的用户 (通过 "调用" 其 confirm()
方法),否则您可以在配置文件中禁用确认作为登录的要求 (见下文)。您可以使用 Laravel 的 artisan tinker
工具轻松地手动确认用户。
我无法生成具有命名空间的控制器
在 bash 中,您需要使用双反斜杠。生成的文件将位于与命名空间等效的目录中
$ php artisan confide:controller --name=MyProject\\Auth\\User
用户能够在不确认账户的情况下登录
如果您只想允许已确认的用户登录,在您的 UserController
中,而不是简单地调用 logAttempt( $input )
,请调用 logAttempt( $input, true )
。第二个参数代表 "confirmed_only"。
自从我运行了 composer update 以来,我的应用程序崩溃了
Confide 4.0.0 是一个重大的更新,其中所有代码库都已被重写。一些类已更改,生成器已得到改进,以匹配一些更好的实践(如存储库和分离的验证器类)。请参阅下面的 发布说明。
如果您有一个使用 Confide 旧版本的遗留项目,请不要担心。您始终可以在您的 composer.json
文件中指定以前的版本。
例如: "zizaco/confide": "~3.2"
将避免 composer 下载 4.0 版本,但可以下载 3.2 版本的错误修复。
发布说明
版本 4.0.0 RC
- 一般错误修复。
- 改进 README.md。
- Confide 可以使用队列发送电子邮件。
- 账户确认令牌不再是基于时间的。
版本 4.0.0Beta 3
- 现在您可以自定义密码重置请求的过期时间(默认为7小时)。
- 重新排列验证
- 现在即使其中一个验证失败,也会调用所有验证。因此,所有验证消息都会一次性发送。
validateIsUnique
方法现在将键发送到 attachErrorMsg,并一次性检查每个$identity
字段的错误
版本 4.0.0 Beta 2
- UserValidator 现在将错误添加到现有的 MessageBag 中,而不是替换它。
- 密码重置令牌将在7天后过期。
- 添加了对自定义连接的支持,使用模型中的 $connection 属性。
- 密码重置请求在使用后被删除。
版本 4.0.0 Beta 1
- 删除了 Ardent 依赖。
- 更新以支持 Laravel 4.2
- 删除了对 PHP 5.3 的支持。
- 从现在起,ConfideUser 将是一个 trait+interface。
- 控制器生成现在还会生成一个 UserRepository 类。
- 删除了过时的变量、函数和类。
- 整个代码库已经被重写。
升级说明:不建议从旧版本进行部分更新。要从 v3.* 升级到 v4.0.0,最佳方法是更新提供者和别名数组中的类名,使用新的迁移重新生成用户表,重写“用户”类,最后重新生成控制器。您的代码库中进行的任何自定义都可能受到影响。
版本 3.0.0
更新以支持 Laravel 4.1
版本 2.0.0 Beta 4
删除了过时的变量和函数。
- $updateRules
- amend()
- generateUuid
- getUpdateRules
- prepareRules
- getRules
- setUpdateRules
- getUserFromCredsIdentity
- checkUserExists
- isConfirmed
添加两个配置值
- login_cache_field (#161)
- throttle_time_period (#162)
版本 2.0.0 Beta 3
更新 Readme
版本 2.0.0 Beta 2
合并了一些拉取请求,并锁定到 Ardent 2.1.x
- 正确处理验证消息 (#124)
- 在 real_save 中正确验证 (#110)
- 使用 Redirect::guest 而不是自定义会话变量来处理 Auth 重定向 (#145)
- 解决了暴力破解漏洞 (#151)
版本 2.0.0 Beta 2
锁定到 Ardent 1.1.x
版本 1.1.0
贡献
请随意在 GitHub 上 Fork 此项目
编码标准
向 confide 贡献代码时,您必须遵循其编码标准。Confide 遵循在 PSR-2 文档中定义的标准。
文档
- 为所有类、方法和函数添加 PHPDoc 块
- 如果方法不返回任何内容,则省略
@return
标签 - 在
@param
、@return
和@throws
前添加一个空白行
许可证
Confide 是在 MIT 许可证条款下分发的免费软件
附加信息
有任何问题,请随时联系我或在 这里 提问
有任何问题,请 在此处报告