laravel 5.2 Auth用户认证教程

官方文档:Laravel 5.2文档服务——用户认证php

若是你看官方文档不太懂,那么请看下文操做。html

说明

框架版本:laravel 5.2 laravel

laravel 5.2内置了auth用户认证服务,因此作网站时用户认证彷佛变得简单了不少,再加上框架的中间件机制,实现路由保护功能也更加方便快捷了。数据库

laravel 框架源自外国人开发,许多思想和咱们的不太同样,刚开始看的时候我仍是一头雾水,可能接触少的缘故;后来看了部分源码才知道具体的过程,因此这里写篇教程帮助入门须要的朋友。浏览器

初始化Auth

laravel 5.2内置了auth用户认证服务,laravel有专门的命令来快速建立auth用户认证的一些东西,好比路由注册,默认视图等。cookie

初始化(请开启cmd命令行,cd到laravel框架目录)app

php artisan make:auth

这个命令执行了的操做:composer

clipboard.png

生成了注册、登陆、重置密码、主页等视图,请在 resources/views 文件夹中查看;
建立了HemoController.php文件,在 app/Http/Controllers 文件夹查看;
还有就是更新了路由,其实就是注册了路由 app/Http/routes.php,打开文件你会看到增长了两行代码:框架

clipboard.png

Route::auth(); 这一句是注册相关的路由,具体的源码能够看 vendor/laravel/framework/srcIlluminate/Routing/Router.php 中的 auth方法ide

clipboard.png

Route::get('/home', 'HomeController@index');这句注册个home路由,指向Home控制器index方法,这是须要登录的用户才能访问的路由,是由于Home控制器加了个中间件 auth

clipboard.png

以上是 php artisan make:auth命令的详细说明,接下来是数据库建立。

建立数据库

若是你是经过composer安装工具安装的laravel框架,默认会在 database/migrations目录中存在两个文件
clipboard.png
保持默认就好,不用修改。

若是不存在这样的文件,能够经过
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

命令会建立三个表

clipboard.png

到这里工做基本完毕,接下来看看登陆注册效果。

测试

cd到项目目录,执行 php -S localhost:3000 -t public ,若是没有错误,就能够在浏览器输入:localhost:3000看效果了。

clipboard.png
若是你发现开启一致在转圈圈,那是由于模板里引用了cdn的boostrap文件,把它改为为本地的就快了。

clipboard.png

点击注册

clipboard.png

登陆

clipboard.png

重置密码,若是须要重置密码,能够在浏览器地址栏输入 localhost:3000/password/reset

clipboard.png

填写须要重置密码,点击发送重置密码连接到邮箱,这里的邮箱是你注册时的邮箱,点击后会在邮箱里收到信息

clipboard.png

打开连接就能够重置密码了。

注:这里发送邮件须要在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自带的用户表结构不符合个人项目需求怎么办?

对于以上彷佛网上已经有答案,但我仍是发现了些问题,好比 laravel auth的源码大部分已经写死是经过 email,password字段来验证的了;如何获得解答我还在测试中,若是测试完成我会另开文档编写auth源码解读相关教程。若是你已经有了解决办法,但愿在评论告知下,谢谢。

相关文章
相关标签/搜索