Laravel- Auth 登录验证

Auth登录验证是laravel框架自带的一种登录验证方式,下面来介绍一下用Auth来实现用户的登录,退出,及获取登录用户信息的方法。
以laravel5.5框架为例,首先创建一个user model,关联数据库的user表,生成的模型内容如下:

     namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //关联表 
    protected $table = 'users';
    //可添加字段
    protected $fillable = ['name','email','password'];
    //隐藏字段
    protected $hidden = ['password','member_token'];
}

1.实现Auth登录的第一步就是对生成的模型进行改造,引入Authenticatable认证接口,并且改变model的继承方式,改为Authenticatable继承,改造后的代码如下:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    //关联表 
    protected $table = 'users';
    //可添加字段
    protected $fillable = ['name','email','password'];
    //隐藏字段
    protected $hidden = ['password','member_token'];
}

2.在laravel框架中找到config文件中的auth.php文件,找到如下代码:

 'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],

这部分是auth认证模块的数据接口,把model的路径改为刚才创建的model路径即可。
3.在更改好user模型之后,我们就可以进行对此模型信息的登录认证功能了。Auth为咱们提供了一下几种登录的认证的使用方法:
验证登录方法:Auth::attempt(['email' => $email, 'password' => $password])
登录方法:Auth::login()
退出登录方法:Auth::logout()
验证是否登录:@if (Auth::check()) 已登录 @endif
输出存储信息:Auth::user()
4.登录 退出 逻辑展示
登录

    public function login(Request $request){

           //正则验证
         $credentials = $this->validate($request, [
           'email' => 'required|email|max:255',
           'password' => 'required'
       ]);

             //验证登录
       if (Auth::attempt($credentials,$request->has('remember'))) {

             if(Auth::user()->activated=='1'){
                     session()->flash('success','欢迎回来!');
                     return redirect()->intended(route('users.show',[Auth::user()]));
             }else{
                    Auth::logout();
                    return redirect('/');
             }
       } else {
           // 登录失败后的相关操作
           session()->flash('danger', '很抱歉,您的邮箱和密码不匹配');
           return redirect()->back();
       }
       return;
    }

退出

 public function end()
    {
        Auth::logout();
        session()->flash('success', '您已成功退出!');
        return redirect('login');
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
lanffff
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

谢谢大佬,解决了我的一些问题,谢谢

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!