博客
关于我
laravel 6 内置 web 认证
阅读量:794 次
发布时间:2023-01-30

本文共 2287 字,大约阅读时间需要 7 分钟。

Laravel 认证原理与使用技巧

认证原理

现代 web 应用的用户认证通常采用 session 技术,将用户的登录信息存储在服务器端 session 文件中。在 Laravel 中,用户注册或登录成功后,服务器会生成 session 文件,并将文件名返回给客户端。客户端在后续请求中通过传递 session 文件名,向服务器端验证 session 是否有效,从而完成认证。

注册流程
  • 用户通过注册页面提交账号和密码。
  • 服务器端生成 session 文件,将文件名返回给客户端。
  • 客户端将 session 文件名存储,用于后续认证。
  • 登陆流程
  • 用户通过登录页面输入账号和密码。
  • 服务器端验证账号和密码,成功则生成 session 文件。
  • 返回 session 文件名,客户端同样存储该文件名。
  • 认证流程
  • 客户端将 session 文件名发送到服务器。
  • 服务器解析 session 文件,验证其有效性。
  • 如果验证通过,用户被认证成功;否则,登录失败。
  • 安装准备

    使用 Laravel 开发用户认证时,首先需完成如下配置:

  • 安装 Laravel 项目:
    composer create-project --prefer-dist laravel/laravel your-app

    下载完成后,进入项目目录,安装依赖项:

    node https://nodejs.orgен

    安装 PHP �уществ:

    composer require laravel/uiphp artisan/ui --authnpm install -g composer nodenpm installphp artisan migrate

    访问项目开发路径:

    http://your-app.dev/register

    如果不需要注册功能,可在路由中禁用注册路由。

  • 使用方法

    修改跳转地址

    在相关控制器中定义 $redirectTo 属性或方法:

    protected $redirectTo = '/';/** * 可以在方法中定义跳转地址 */protected function redirectTo(){    return '/path';}
    认证字段修改

    定义用户认证字段:

    public function username(){    return 'name'; // 或者 email,默认根据需求选择}
    获取登录信息

    在路由中使用中间件或助理:

    if (Auth::check()) {    $user = Auth::user();    $id = Auth::id();}
    添加认证条件

    通过中间件或路由属性控制访问权限:

    Route::get('profile', function () {    // 只允许已认证用户访问...})->middleware('auth');public function __construct(){    $this->middleware('auth');}
    其他功能示例
    • 禁止多次登录:默认五次失败后暂停一分钟。
    • Session过期时间:默认为 120 分钟,可以在环境变量中配置:
      SESSION_LIFETIME=180
    • 手动认证用户
      class LoginController extends Controller{    public function authenticate(Request $request)    {        $credentials = $request->only('email', 'password');        if (Auth::attempt($credentials)) {            return redirect('/some/url');        }    }}
    • 记住用户
      if (Auth::attempt($credentials, true)) {    // 用户被记住,下次 자동登录}
    • 单设备登录
      Auth::logoutOtherDevices($password); // 取消在其他设备的登录
    • 临时认证
      Auth::once($credentials); // 临时认证,无需存储状态
    弹窗认证

    通过 AJAX 弹窗实现登录认证:

    Route::get('profile', function () {    // ...})->middleware('auth.basic');

    常见问题解答

    • 如果 session 文件丢失,可在 /storage/session/ 目录ірhavenAspectRatio(0.618, 0.618) -- ;// 是否時 estudying rounded// 是否做的事情是正方形// 是否可以用作灰影 برای.round-event//vetices 是否可以有不同的形狀//vetices 是否可以像正方形一样有 angle//vetices 是否可以有角度//vetices 是否可以呈現固定的角度ροφορ kısmında biraintı varizिं�// 法拉第四维度// 可以否剪裁?// 也许在 workaround中使用 mat inversed.

      //iffin roundness?                  //vetices是否有 translations?                  return \$paths;

      }) ;

    转载地址:http://yugyk.baihongyu.com/

    你可能感兴趣的文章
    KuiperInfer深度学习推理框架-源码阅读和二次开发(3):计算图
    查看>>
    KVM 安全策略配置实战
    查看>>
    KVM 性能测试优化实战
    查看>>
    KVM命令行管理企业级实战
    查看>>
    KVM迁移与维护实战
    查看>>
    KxMenu下拉菜单
    查看>>
    KXML2部分详解(J2ME)
    查看>>
    KXML解释本地或网络上的XML文件
    查看>>
    Kylin学习笔记 - CDH6.2集群 kylin2.6.4 环境搭建
    查看>>
    Kylin学习笔记 - 使用Java模拟生成测试数据
    查看>>
    Kylin踩坑笔记 - /developer/apache-kylin-2.6.2-bin/tomcat/conf/.keystore (No such file)
    查看>>
    labview如何加载库_LabVIEW中调用DLL文件实现温湿度数据显示(VI源码+驱动库+图片说明)...
    查看>>
    Lake Counting
    查看>>
    lambda 与列表理解性能
    查看>>
    Lambda 实现超强排序
    查看>>
    Lambda 表达式(使用前提、“类型推断”、作用、优缺点、Lambda还能省略的情况)【java8新特性------Lambda 表达式】
    查看>>
    lambda表达式与匿名内部类与双冒号(::)
    查看>>
    Lammp安装过程
    查看>>
    lamp 一键安装
    查看>>
    Lamp(Fpm-Php)基本配置
    查看>>