我想知道如何在laravel附带的laravel身份验证中添加像active一样的额外条件?我可以通过手动进行身份验证来做到这一点,但是如果我可以这么说,是否有任何可能使用默认身份验证?
答案 0 :(得分:1)
您可以在数组参数中添加额外的项目,例如:
Auth::attempt([
'username' => $username,
'password' => $password,
'some_field_name' => $some_value
]);
将检查所有项目,如where($key, '=', $value)
。
答案 1 :(得分:1)
如果在AuthController中覆盖AuthenticatesUsers trait的getCredentials
方法,则可以添加额外的条件参数:
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
/**
* Get the needed authorization credentials from the request.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
protected function getCredentials(Request $request)
{
$credentials = $request->only($this->loginUsername(), 'password');
$credentials['active'] = 'y';
return $credentials;
}
//Other code and methods here
}
此方法提供要检查Attempt方法的字段。在文件的开头,您需要使用Illuminate\Http\Request
命名空间才能工作。
答案 2 :(得分:0)
我安装了 laravel 微风认证入门套件。 如果需要,您可以通过在 $credential 数组中添加列名和值来添加任何额外的用户表列验证。请参阅 App\Http\Requests\Auth\LoginRequest.php 中的 authenticate() 。
public function authenticate()
{
$this->ensureIsNotRateLimited();
$credentials =$this->only('username', 'password');
$credentials['status'] = '1';
if (! Auth::attempt($credentials, $this->filled('remember'))) {
RateLimiter::hit($this->throttleKey());
throw ValidationException::withMessages([
'username' => __('auth.failed'),
]);
}
RateLimiter::clear($this->throttleKey());
}