官方文档:Laravel 5.2文档服务——用户认证php
若是你看官方文档不太懂,那么请看下文操做。html
框架版本:laravel 5.2 laravel
laravel 5.2内置了auth用户认证服务,因此作网站时用户认证彷佛变得简单了不少,再加上框架的中间件机制,实现路由保护功能也更加方便快捷了。数据库
laravel 框架源自外国人开发,许多思想和咱们的不太同样,刚开始看的时候我仍是一头雾水,可能接触少的缘故;后来看了部分源码才知道具体的过程,因此这里写篇教程帮助入门须要的朋友。浏览器
laravel 5.2内置了auth用户认证服务,laravel有专门的命令来快速建立auth用户认证的一些东西,好比路由注册,默认视图等。cookie
初始化(请开启cmd命令行,cd到laravel框架目录)app
php artisan make:auth
这个命令执行了的操做:composer
生成了注册、登陆、重置密码、主页等视图,请在 resources/views
文件夹中查看;
建立了HemoController.php文件,在 app/Http/Controllers
文件夹查看;
还有就是更新了路由,其实就是注册了路由 app/Http/routes.php
,打开文件你会看到增长了两行代码:框架
Route::auth();
这一句是注册相关的路由,具体的源码能够看 vendor/laravel/framework/srcIlluminate/Routing/Router.php
中的 auth
方法ide
Route::get('/home', 'HomeController@index');
这句注册个home路由,指向Home控制器index方法,这是须要登录的用户才能访问的路由,是由于Home控制器加了个中间件 auth
。
以上是 php artisan make:auth
命令的详细说明,接下来是数据库建立。
若是你是经过composer安装工具安装的laravel框架,默认会在 database/migrations
目录中存在两个文件
保持默认就好,不用修改。
若是不存在这样的文件,能够经过php artisan make:migration create_users_table
和php artisan make:migration create_password_table
生成,
而后编辑文件
//create_users_table.php <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { public function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } public function down() { Schema::drop('users'); } }
//create_password_table.php <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePasswordResetsTable extends Migration { public function up() { Schema::create('password_resets', function (Blueprint $table) { $table->string('email')->index(); $table->string('token')->index(); $table->timestamp('created_at'); }); } public function down() { Schema::drop('password_resets'); } }
到这里请开启数据库,并在.env
文件配置好数据库链接,建立相关数据;;而后执行命令建立表
php artisan migrate
命令会建立三个表
到这里工做基本完毕,接下来看看登陆注册效果。
cd到项目目录,执行 php -S localhost:3000 -t public
,若是没有错误,就能够在浏览器输入:localhost:3000
看效果了。
若是你发现开启一致在转圈圈,那是由于模板里引用了cdn的boostrap文件,把它改为为本地的就快了。
点击注册
登陆
重置密码,若是须要重置密码,能够在浏览器地址栏输入 localhost:3000/password/reset
填写须要重置密码,点击发送重置密码连接到邮箱,这里的邮箱是你注册时的邮箱,点击后会在邮箱里收到信息
打开连接就能够重置密码了。
注:这里发送邮件须要在config/email.php
中或者.env
文件配置邮箱服务,具体的能够看官方文档Laravel 5.2 服务——邮件
可能在流程中会用到一些查看验证信息,因此一些必备的方法获取认证信息是必要的。
一些与认证有关的方法
Auth::guard('admin') //指定看守 返回Auth对象 Auth::user(); //获取经过验证的用户 Auth::user()->name Auth::check(); //检查是否验证 Auth::viaRemember(); //判断用户是否使用“记住我”cookie进行认证 Auth::login($user); //将一个已存在的用户实例登陆到应用中,传入实例必须是Illuminate\Contracts\Auth\Authenticatable 契约的实现 Auth::loginUsingId($userid);//经过用户ID登陆到应用 Auth::once($credentials);//只在单个请求中将用户登陆到应用,而不存储任何 Session 和 Cookie Auth::attempt($credentials);//登陆用户 ,$credentials是['email' => $email, 'password' => $password],这个方法会和数据库对比 Auth::onceBasic(); Auth::provider(); Auth::logout(); //注销验证用户 Auth::extend(); //自定义看守 Auth::provider(); //自定义用户提供者
对于以上彷佛网上已经有答案,但我仍是发现了些问题,好比 laravel auth的源码大部分已经写死是经过 email,password字段来验证的了;如何获得解答我还在测试中,若是测试完成我会另开文档编写auth源码解读相关教程。若是你已经有了解决办法,但愿在评论告知下,谢谢。