Laravel 自带的Auth验证登录方法

在laravel有自带的登录验证。只要建立对应的表和配置一些文件就能够使用,无需开发者自己去实现登录逻辑。

第一步:配置方面

在config下的auth.php配置guards 和 providers 。 之后新建文件和数据库名称要和这里的对应。

'guards' => [

'web' => [

'driver' => 'session',

'provider' => 'users',

],

'api' => [

'driver' => 'token',

'provider' => 'users',

],

//Laravel Auth 验证登录

'admin' => [

'driver' => 'session',

'provider' => 'admins',

]

],

'providers' => [

'users' => [

'driver' => 'eloquent',

'model' => App\User::class,

],

'admins' => [

'driver' => 'eloquent',

'model' => App\Admin::class,

],

// 'users' => [

// 'driver' => 'database',

// 'table' => 'users',

// ],

],

第二步:数据库方面

1 新建admins表,作为后台用户表

其中remember_token 用于是否记住用户

2 在app目录下新建Admin.php 文件对应,文件名称取决于配置文件中的名称

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable

{

protected $fillable = [

'username', 'password',

];

protected $hidden = [

//remember_token 字段用于记住我的功能

'password', 'remember_token',

];

public static $rules = [

'username'=>'required',

'password'=>'required'

];

}

第三步:控制器中auth的使用

Auth::guard('admin')->attempt($credentials)); 尝试登录

Auth::guard($guard)->guest();判断用户是否来宾,可用于中间件,判断用户是否登录,返回false,则已经登录,反之,跳转会登录页面

Auth::guard($guard)->user();获取已经登录的用户信息,注意在__construct()中无法获取,可以在中间件里面获取

<?php

namespace App\Http\Middleware;

use Closure;

use Illuminate\Support\Facades\Auth;

class AdminAuthMiddleware

{

/**

* Handle an incoming request.

*

* @param \Illuminate\Http\Request $request

* @param \Closure $next

* @return mixed

*/

public function handle($request, Closure $next, $guard = null)

{

//如果没有指定的话,默认 guard 是 web,

//dump(Auth::guard($guard)->check()); 判断用户是否认证

//Auth::guard($guard)->user() 获取用户信息

//Auth::guard($guard)->guest() 是否是来宾

if(Auth::guard($guard)->guest()){

if($request->ajax() || $request->wantsJson()){

return response('Unauthorized.', 401);

}else{

return redirect()->guest('admin/login');

}

}

return $next($request);

}

}

$credentials = $request->only('username', 'password');

/**

* 使用laravel自带的Auth登录

* 1、密码使用的是hash加密 $crypt = password_hash($password, PASSWORD_DEFAULT);

*/

if(Auth::guard('admin')->attempt($credentials)){

return response()->json(['code' => 200, 'msg' => '登录成功']);

}else{

return response()->json(['code' => 403, 'msg' => '用户名或密码错误']);

}

以上这篇Laravel 自带的Auth验证登录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是 Laravel 自带的Auth验证登录方法 的全部内容, 来源链接: utcz.com/p/223455.html

回到顶部