牛骨文教育服务平台(让学习变的简单)
博文笔记

laravel 用户身份验证

创建时间:2017-04-11 投稿人: 浏览次数:1720

一、相关文件:

/config/auth.php // 验证配置,包含:验证方式、用户模型类、用户表名
/App/User.php    // 用户 Eloquent 模型,对应用户表名 users,当 auth.php 配置认证驱动为 Eloquent 时,配合一起使用。
                 // 使用官方认证,密码应最少 60 位,并需要包含一个叫做 remember_token 的字段用于存储记住登录状态的 session token。
                 // 记住登录状态:$table->rememberToken();
/App/Http/Controllers/Auth/AuthController // 认证控制器一,处理新用户的注册和验证/App/Http/Controllers/Auth/PasswordController // 认证控制器二,处理用户找回密码


二、使用方法:

1、注册路由:laravel默认没有指定登录、注册的路由地址,故需要手动指定:

Route::get("auth/login", "AuthAuthController@getLogin");       //登录表单
Route::post("auth/login", "AuthAuthController@postLogin");     //登录处理
Route::get("auth/logout", "AuthAuthController@getLogout");     //退出登录
Route::get("auth/register", "AuthAuthController@getRegister"); //注册表单
Route::post("auth/register", "AuthAuthController@postRegister  //注册处理


2、提供视图:在 resources/views/auth 中,创建 login.blade.php 和 register.blade.php

字段名:邮箱(登录账号):email    密码:password    确认密码:password_confirmation    用户名为:name    记录登录:remember


3、认证:

  (1) 自动认证:默认使用 AuthController,提供了新用户验证规则 validator 和 添加用户 create两个方法,可以自行修改已适应需求。

  (2) 手动认证:

public function authenticate()
{
    if (Auth::attempt(["email" => $email, "password" => $password]), $isRememberLogin) {
        // 认证通过...
        return redirect()->intended("dashboard");
    }
}


4、跳转:

认证成功后默认跳转到 /home 路由,可以在 routers.php 中定义该路由实现定制,也可以在控制器中修改:

protected  $redirectPath = "/dashboard";    // 自定义登录成功跳转位置,默认是:/home
protected  $loginPath = "/login";           // 自定义登录失败后跳转位置,默认是:/auth/login


5、获取认证信息:

Auth::check(); //是否认证通过
Auth::login($user); //手动登录
Auth::loginUsingId(); //使用ID登录
Auth::once($userInfoArray); //临时登录,完成即退
Auth:logout(); // 退出登录
Auth::viaRemember(); // 是否记住登录
$userInfo = Auth::user(); // 得到认证用户实例
$userInfo = $request->user(); // 登录成功后通过 Request 门面获取

默认在登录失败N次后将有一分钟不能登录,它基于用户名|邮箱+IP。


三、路由保护(访问权限):使用 auth 中间件来控制可以访问某些路由的用户

1、使用方法:

Route::get("/path", [ "middleware" => "auth", "uses" => "SomeController@method "]);

或者:直接在控制器中使用 middleware

public function __construct(){
    $this->middleware("auth");
}


四、重置密码:默认使用邮箱认证,添加以下路由:

// 重置密码邮件...
Route::get("password/email", "AuthPasswordController@getEmail");
Route::post("password/email", "AuthPasswordController@postEmail");
// 密码重置...
Route::get("password/reset/{token}", "AuthPasswordController@getReset");
Route::post("password/reset", "AuthPasswordController@postReset");






声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。