hampel/validate-laravel-auth

此包已被弃用且不再维护。未建议替代包。

自定义 Laravel 4 Auth 验证服务提供者 Composer 包

1.3.1 2015-05-22 03:02 UTC

This package is auto-updated.

Last update: 2019-08-26 01:12:18 UTC


README

为 Laravel 4 定制的 Auth 验证器

Simon Hampel 提供。

备注

我决定不更新此包以使其与 Laravel 5 兼容 - 此功能由内置的 Auth 控制器提供,避免了在验证规则中尝试认证用户的复杂性。

有关更多信息,请参阅 Laravel 5 特性 AuthenticatesAndRegistersUsers

:::php
/**
 * Handle a login request to the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function postLogin(Request $request)
{
	$this->validate($request, [
		'email' => 'required', 'password' => 'required',
	]);
	$credentials = $request->only('email', 'password');
	if ($this->auth->attempt($credentials, $request->has('remember')))
	{
		return redirect()->intended($this->redirectPath());
	}
	return redirect($this->loginPath())
				->withInput($request->only('email', 'remember'))
				->withErrors([
					'email' => 'These credentials do not match our records.',
				]);
}

这实际上实现了相同的结果,而我们无需编写任何代码!

然而,我也认识到验证库有其他用途,所以如果存在我在考虑之外将认证功能包含在验证库中的用例,请告知我,我会重新考虑发布此包的 L5 版本。

安装

安装 Hampel Laravel Auth 验证器的推荐方式是通过 Composer

在您的 composer.json 中通过 Composer 需求此包

:::json
{
    "require": {
        "hampel/validate-laravel-auth": "1.3.*"
    }
}

运行 Composer 以更新新需求。

:::bash
$ composer update

此包是为与 Laravel 4 框架一起工作而构建的。

打开您的 Laravel 配置文件 config/app.php 并在 $providers 数组中添加服务提供者

:::php
"providers" => array(

    ...

    "Hampel\Validate\LaravelAuth\ValidateServiceProvider"

),

用法

此包为 Laravel 4 添加了额外的验证器 - 有关一般用法说明,请参阅 Laravel 文档 - 验证

auth:credential_column1,credential_value1,credential_column2,credential_value2,...__

验证字段必须是密码,它将与提供的凭据列名称和值组合,然后传递给 Auth::validate 以检查它们是否是有效的密码/凭据组合。

auth 规则至少需要两个参数(如果提供少于两个参数,则规则将始终失败)。

  1. __credential_column1__: 第一个凭据列字段的名称,例如:'username'(WordPress 中的 'user_login'),或 'email'(WordPress 中的 'user_email')。
  2. __credential_value1__: 要在第一个凭据列中定位的第一个凭据的值
  3. __credential_column2__: 第二个凭据列的名称
  4. __credential_value2__: 第二个凭据的值
  5. ...

通过这种方式,可以指定多个凭据来验证用户(例如,使用用户名和电子邮件定位用户)。

示例

:::php
$username_field = "user_login";

$username = Input::get('username');
$password = Input::get('password');

$user_table = Config::get('auth.table');

$userdata = array(
	'username' => $username,
	'password' => $password
);

// Declare the rules for the form validation.
$rules = array(
	'username' => array('required', "exists:{$user_table},{$username_field}"),
	'password' => array('required', "auth:{$username_field},{$username}")
);

// Validate the inputs.
$validator = Validator::make($userdata, $rules);

// Check if the form validates with success.
if ($validator->passes())
{
	dd("passes");
}
else
{
	dd("fails");
}