zizaco / confide
Confide 是 Laravel 4 的认证解决方案
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
- 6.0.x-dev
- 5.0.x-dev
- dev-master / 4.3.x-dev
- 4.3.0
- 4.3.0-beta.1
- 4.2.0
- 4.1.1
- 4.1.0
- 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-username-optional
This package is auto-updated.
Last update: 2024-08-29 03:52:44 UTC
README
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.3@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 migrate 命令运行它
$ php artisan migrate
它将设置一个包含 email
、password
、remember_token
、confirmation_code
和 confirmed
列的表,这些是 Confide 使用所需的默认字段。您可以稍后自由向表中添加更多列。
将您的 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 上搜索 "在 Laravel 4 中使用仓库创建灵活的控制器"。( wink)
使用自定义类、表或模型名称
您可以在 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
。生成的文件将位于与命名空间等效的目录中。( wink)
使用自定义表单或电子邮件
首先,发布配置文件
$ 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->email = 'johndoe@site.dev'; $user->password = 'foo_bar_1234'; $user->password_confirmation = 'foo_bar_1234'; $user->confirmation_code = md5(uniqid(mt_rand(), true)); $user->confirmed = 1; if(! $user->save()) { Log::info('Unable to create user '.$user->email, (array)$user->errors()); } else { Log::info('Created user '.$user->email); } } }
自定义用户验证
您可以通过创建一个实现了 UserValidatorInterface
的类并注册为 "confide.user_validator" 来实现自己的验证器。
例如,创建您的自定义验证器类
// app/models/MyOwnValidator.php class MyOwnValidator implements UserValidatorInterface { public function validate(ConfideUserInterface $user) { unset($user->password_confirmation); 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。Enstrust与Confide配合得非常好。
登录后重定向到之前的路由
在定义您的过滤器时,您应该在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
。
我需要我的用户有一个"用户名"
在生成confide迁移和控制器时使用--username
选项。
$ php artisan confide:migration --username
...
$ php artisan confide:controller --username
如果您想将用户名作为必填字段,您将必须扩展UserValidator并重写$rules
属性,将"用户名"设置为required
。
当我尝试登录时收到一条消息“您的账户可能未确认”
您需要确认新创建的用户(通过“调用”其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.3.0 Beta 1
- 用户名现在是可选字段。 生成迁移和控制器时使用
--username
。 - 通用错误修复。
版本 4.2.0
- 通用错误修复。
- 改进了 README.md。
- 改进了现有的翻译并添加了新的翻译。
版本 4.0.0 RC
- 通用错误修复。
- 改进了 README.md。
- Confide 可以使用队列发送电子邮件。
- 账户确认令牌不再是基于时间的。
版本 4.0.0 Beta 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,最佳做法是更新提供者和别名数组中的类名,使用新的迁移重新生成用户表,重新编写 "user" 类,最后重新生成控制器。您的代码库中进行的任何自定义都可能受到影响。
版本 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 而不是自定义会话变量来处理认证重定向 (#145)
- 解决了暴力破解漏洞 (#151)
版本 2.0.0 Beta 2
锁定到 Ardent 1.1.x
版本 1.1.0
贡献
请随意在 GitHub 上分支此项目
编码标准
向 confide 贡献代码时,您必须遵循其编码标准。Confide 遵循在 PSR-2 文档中定义的标准。
文档
- 为所有类、方法和函数添加 PHPDoc 块
- 如果方法不返回任何内容,则省略
@return
标签 - 在
@param
、@return
和@throws
前添加一个空行
许可证
Confide 是在 MIT 许可证条款下免费分发的软件
附加信息
如有任何疑问,请随时联系我或在此提问
如有任何问题,请在此报告