LaravelAuth是Laravel框架自带的用户认证系统,它提供了基于密码、基于令牌的认证方式,以及注册、找回密码等功能。在开发过程中,我们经常需要使用到用户身份验证,这时LaravelAuth就成为了我们最好的选择。
一、安装LaravelAuth
1、使用Composer安装Laravel:
composer create-project --prefer-dist laravel/laravel blog
2、生成LaravelAuth默认的用户认证文件:
php artisan make:auth
3、生成用户认证所需的数据表:
php artisan migrate
这样我们就可以在Laravel中使用LaravelAuth了。
二、使用LaravelAuth实现身份认证
1、中间件auth:
Laravel中间件auth已经预定义,我们可以使用它来防止未经授权的用户访问指定页面。只需要在路由定义中加入auth中间件即可:
Route::get('/home', 'HomeController@index')->name('home')->middleware('auth');
这样,未登陆的用户访问/home页面时,会被重定向到登录页面。需要注意的是,如果在控制器中定义路由,可以在构造函数中添加middleware,如:
public function __construct()
{
$this->middleware('auth');
}
2、用户认证:
LaravelAuth提供了许多方法供我们使用:
- Auth::check():判断用户是否登录
- Auth::user():获取当前用户的模型实例
- Auth::id():获取当前用户的id
- Auth::logout():退出登录
在控制器中可以这样使用:
use Illuminate\Support\Facades\Auth;
public function index()
{
if (Auth::check()) {
// 用户已登录
} else {
// 用户未登录
}
}
三、定制LaravelAuth
1、自定义认证驱动:
LaravelAuth默认使用Eloquent来执行用户认证,但我们可以通过创建自定义认证驱动,实现我们自己的身份验证逻辑。
首先,我们需要在config/auth中定义一个新的驱动:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'newDriver' => [
'driver' => 'newDriver',
'provider' => 'users',
],
],
然后,我们需要创建一个新的驱动并实现用户验证方法:
namespace App\Auth;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;
use Illuminate\Contracts\Auth\UserProvider as Provider;
class NewDriverUserProvider extends EloquentUserProvider implements Provider
{
public function validateCredentials(UserContract $user, array $credentials)
{
// 自定义验证逻辑
return true;
}
}
最后,我们需要在config/auth中定义一个新的用户提供者:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'newProvider' => [
'driver' => 'newDriver',
'model' => App\User::class,
],
],
现在我们就可以在config/auth中指定使用我们自定义的认证驱动了:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'newDriver' => [
'driver' => 'newDriver',
'provider' => 'newProvider',
],
],
2、自定义登录验证字段:
LaravelAuth默认使用email来作为登录验证字段,如果我们想要使用其他字段来作为登录验证字段,需要在config/auth中进行配置:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
'username' => 'username', // 登录验证字段
],
],
四、总结
以上就是LaravelAuth的一些介绍及应用,希望对你有所帮助。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/290817.html