Posted in PHP onSeptember 30, 2019
在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验证登录方法
- Author -
weixin_42273669声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@