博客
关于我
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/

    你可能感兴趣的文章
    leaflet散点图(leaflet篇.13)
    查看>>
    leaflet暗色系地图样式地图(获取滤镜值)(leaflet篇.44)
    查看>>
    leaflet柱状图(leaflet篇.75)
    查看>>
    leaflet波纹点(leaflet篇.14)
    查看>>
    leaflet点采集与点编辑(leaflet篇.5)
    查看>>
    leaflet矩形空间查询(ElasticSearch技术实现)(leaflet篇.50)
    查看>>
    leaflet线周边空间查询(ElasticSearch技术实现)(leaflet篇.53)
    查看>>
    leaflet绘制飞地(leaflet篇.66)
    查看>>
    leaflet聚合图(leaflet篇.11)
    查看>>
    leaflet聚合图(大数据版)(leaflet篇.19)
    查看>>
    leaflet自定义地图样式地图(插件实现)(leaflet篇.18)
    查看>>
    leaflet虚线(leaflet篇.60)
    查看>>
    leaflet蜂巢图(leaflet篇.15)
    查看>>
    leaflet调用geoserver发布的postgis数据图层(leaflet篇.80)
    查看>>
    leaflet轨迹线(leaflet篇.58)
    查看>>
    leaflet面采集与面编辑(leaflet篇.7)
    查看>>
    leaflet饼状图(leaflet篇.74)
    查看>>
    LeakCanary使用,案例静态Toast引起的内存泄漏
    查看>>
    Leapin' Lizards
    查看>>
    learn c++(vector and array)
    查看>>