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表,作为后台用户表
Laravel 自带的Auth验证登录_第1张图片
其中remember_token 用于是否记住用户

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

'required',
        'password'=>'required'
    ];
}

Laravel 自带的Auth验证登录_第2张图片

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

Auth::guard('admin')->attempt($credentials));  尝试登录
Auth::guard($guard)->guest();判断用户是否来宾,可用于中间件,判断用户是否登录,返回false,则已经登录,反之,跳转会登录页面
Auth::guard($guard)->user();获取已经登录的用户信息,注意在__construct()中无法获取,可以在中间件里面获取
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)