zizaco / confide-mongo
Confide Mongo 是一个针对 Laravel 4 的身份验证解决方案,使用 mongolid-laravel。
Requires
- php: >=7.2
- ext-mongodb: ^1.2.0
- illuminate/contracts: ^5.8 || ^6.0 || ^7.0 || ^8.0
- illuminate/mail: ^5.8 || ^6.0 || ^7.0 || ^8.0
- illuminate/support: ^5.8 || ^6.0 || ^7.0 || ^8.0
- leroy-merlin-br/mongolid-laravel: ^2.0
- zizaco/confide: 6.0.x-dev
Requires (Dev)
- illuminate/container: ^5.8 || ^6.0 || ^7.0 || ^8.0
- mockery/mockery: ^1.0
- phpunit/phpunit: ^9.4
README
Confide 是一个针对 Laravel4 的身份验证解决方案,使用 MongoLid 制作,旨在消除涉及用户管理的重复性任务:账户创建、登录、登出、电子邮件确认、密码重置等。
Confide 旨在使用简单、配置快速和灵活。
注意:如果您 没有 使用 MongoDB,请检查 Confide。
功能
当前
- 账户确认(通过确认链接)。
- 密码重置(通过发送带有更改密码链接的电子邮件)。
- 轻松渲染登录、注册和密码重置的表单。
- 生成可定制的登录、注册、密码重置、确认等路由。
- 生成一个可定制的控制器,用于处理基本用户账户操作。
- 包含一组帮助基本用户功能的方法。
- 与 Laravel Auth 组件/配置集成。
- 字段/模型验证。
- 登录节流。
- 认证后重定向到之前的路由。
如果您正在寻找用户角色和权限,请查看 Entrust
计划
- 用户注册和密码重置中的验证码。
- 一般改进。
快速入门
所需设置
在 composer.json
文件的 require
键中添加以下内容
"zizaco/confide-mongo": "dev-master"
运行 Composer 更新命令
$ composer update
在您的 config/app.php
中,将 'Zizaco\ConfideMongo\ConfideMongoServiceProvider'
添加到 $providers
数组的末尾
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Zizaco\ConfideMongo\ConfideMongoServiceProvider',
),
在 config/app.php
的末尾添加 'Confide' => 'Zizaco\Confide\ConfideFacade'
到 $aliases
数组中
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
...
'Confide' => 'Zizaco\Confide\ConfideFacade',
),
配置
如 MongoLid 身份验证 中所述,在 config/auth.php
中将驱动程序设置为 "mongoLid"。
... 'driver' => 'mongoLid', ...
config/auth.php
中包含的这些值将被 Confide Mongo 用于生成控制器和路由。
在 config/mail.php
中设置 from
数组中的 address
和 name
。这些将被用于向用户发送账户确认和密码重置电子邮件。
用户模型
将您的 app/models/User.php
中的 User 模型更改为
<?php
use Zizaco\ConfideMongo\ConfideMongoUser;
class User extends ConfideMongoUser {
}
ConfideMongoUser
类将处理用户模型的一些行为。
删除默认访问器
至少,您可以删除默认控制器和 Confide 的默认路由。
$ php artisan confide:controller
$ php artisan confide:routes
不要忘记删除 composer 自动加载
$ composer dump-autoload
然后您就可以开始了。 访问 http://yourapp/user/create
创建您的第一个用户。检查 app/routes.php
以查看可用路由。
详细使用说明
基本设置
- 在
config/database.php
中运行正常的 MongoDB 数据库连接。 - 在
config/auth.php
中将身份验证驱动程序设置为 "mongoLid"。 - 检查并纠正
config/auth.php
中的模型和集合名称。Confide 将始终使用它们。 config/mail.php
中的from
配置。
配置
- 在
config/app.php
中,在'providers'
和'aliases'
中分别添加ConfideMongoServiceProvider
和ConfideFacade
。 - 用户模型(与
config/auth.php
中的名称相同)应扩展ConfideMongoUser
类。这将导致方法如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
中的视图名称。
更新用户
要更新数据库中已有的用户,您可以选择传递不同的规则集或使用amend函数。
$user = new User;
$user->username = 'newUserName';
// Save
$user->save($this->getUpdateRules());
验证模型字段
要更改用户模型的验证规则,请查看Laravel 4 验证。例如
<?php
use Zizaco\ConfideMongo\ConfideMongoUser;
class User extends ConfideMongoUser {
/**
* Validation rules
*/
public static $rules = array(
'email' => 'required|email',
'password' => 'required|between:4,11|confirmed',
);
}
您可以在您的集合和验证数组中添加更多字段。然后,您应该构建包含额外字段的自己的注册表单。
将附加信息传递给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
注意:Entrust 还不支持 MongoLid / MongoDB
登录后重定向到上一个路由
当定义您的过滤器时,应设置'loginRedirect'
会话变量。例如
// filters.php
Route::filter('auth', function()
{
if ( Auth::guest() ) // If the user is not logged in
{
// Set the loginRedirect session variable
Session::put( 'loginRedirect', Request::url() );
// Redirect back to user login
return Redirect::to( '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(){
Session::put( 'loginRedirect', Request::url() );
return Redirect::to( 'user/login' );
} );
验证路由
如果您想验证路由是否存在,Confide::checkAction
函数就是您要找的。
目前它用于视图来确定非RESTful与RESTful路由。
故障排除
创建用户时出现"‘confirmation_code’必需"错误
如果您在模型中覆盖了save()
方法,请确保调用parent::save()
public function save( $forced = false ){
parent::save( $forced) // Don't forget this
// Your stuff
}
当用户注册时,确认链接没有被发送
如果您在模型中覆盖了afterSave()
方法,请确保调用parent::afterSave()
用户能够登录而无需确认账户
如果您只想让已确认的用户登录,在您的UserController
中,您应该调用logAttempt( $input, true )
而不是简单地调用logAttempt( $input )
。第二个参数代表"confirmed_only"。
许可证
Confide 是免费软件,遵循 MIT 许可协议分发
更多信息
如有任何疑问,请随时联系我或在这里提问
如有任何问题,请在此处报告