前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel 自带的Auth验证登录方法

Laravel 自带的Auth验证登录方法

作者头像
砸漏
发布2020-10-20 14:58:16
2.6K0
发布2020-10-20 14:58:16
举报
文章被收录于专栏:恩蓝脚本

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

第一步:配置方面

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

代码语言:javascript
复制
'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 文件对应,文件名称取决于配置文件中的名称

代码语言:javascript
复制
<?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的使用

代码语言:javascript
复制
Auth::guard('admin')- attempt($credentials)); 尝试登录
Auth::guard($guard)- guest();判断用户是否来宾,可用于中间件,判断用户是否登录,返回false,则已经登录,反之,跳转会登录页面
Auth::guard($guard)- user();获取已经登录的用户信息,注意在__construct()中无法获取,可以在中间件里面获取
代码语言:javascript
复制
<?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);
 }
}
代码语言:javascript
复制
 $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验证登录方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档