如何创建Laravel框架应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建Laravel框架应用相关的知识,希望对你有一定的参考价值。

参考技术A Laravel框架怎么配置

分步阅读

框架下载好了,但是想要很好的使用,可能我们还有一些东西需要知道,这就是配置。和项目有关的配置是在 app/config 文件夹里,但是除了这里还有一些配置可能是我们需要的。作为一个基础教程,我就不一一介绍了,只是选择一些大家配置比较多的地方讲解一下。

app/config 中的配置说明

在 app/config 文件夹中经常配置的一般有两个文件:app.php 和 database.php 两个文件,他们一个是配置项目杂项的、一个是配置数据库的。下面我就里面的常用配置做一下解释: 先是 app.php 文件

其实 app.php 后面还有一些内容,但那些基本上不需要你修改。(只有添加第三方包的时候才有需要,我们会到时候再讲)本回答被提问者和网友采纳

如何在 Laravel 中为 REST API 创建身份验证

【中文标题】如何在 Laravel 中为 REST API 创建身份验证【英文标题】:How to create authentication in Laravel for REST API 【发布时间】:2015-10-01 09:02:12 【问题描述】:

我正在使用 Laravel 框架创建 REST API。一切都很棒 !但是我在自定义身份验证和授权方面遇到了一个问题。 默认情况下,Laravel 在内核中有一些基本的身份验证,它是桌面/浏览器应用程序的重要安全层,但对于主要用于移动设备的 REST API,它是多余的。 所以我在Kernel.php中评论了这些行

  /*    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,*/

相反,我创建了自己的中间件类并将其绑定到路由

 protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'auth.token' => \App\Http\Middleware\TokenAuthMiddleware::class,
        'auth.simple' => \App\Http\Middleware\AuthBasicMiddleware::class,
    ];

我决定使用通用方法 - 令牌(没有 OAuth 服务器)。令牌发出一次以响应用户凭据,而不仅仅是在需要时刷新。 我的中间件类只是骨架

<?php

namespace App\Http\Middleware;

use Closure;

class TokenAuthMiddleware

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    
        dd($request->header());
        return $next($request);
    

我计划在请求中使用来自Authorization 标头的令牌,并检查它是否有效且未过期,允许用户访问受保护的内容。 我想在我的中间件类中执行此操作。但是我有一个问题,我没有收到来自请求的标头。为了测试 API,我使用 Chrome 扩展(Advance Rest Client)或 Curl,但它们都不起作用,我的意思是客户端运行良好,但我认为问题出在 laravel 中。

问题是我在请求中手动指定了标头,但它们都没有出现在 laravel dd - dd($request-&gt;header()); 中。

我尝试了不同的标头,但它们都有效,但不是全部,但除了Authorization 标头之外的一些。

这是一个例子

Request headers 
CSP: active
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36
From: asdasdsadsa
Authorization: token=20sadsa
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2
Cookie: PHPSESSID=sdotvgu9bvm63b947h5d98nk72; language=ru; currency=UAH

我从 dd 得到什么

array:9 [
  "host" => array:1 [
    0 => "myhost ip"
  ]
  "connection" => array:1 [
    0 => "keep-alive"
  ]
  "csp" => array:1 [
    0 => "active"
  ]
  "user-agent" => array:1 [
    0 => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
  ]
  "from" => array:1 [
    0 => "asdasdsadsa"
  ]
  "accept" => array:1 [
    0 => "*/*"
  ]
  "accept-encoding" => array:1 [
    0 => "gzip, deflate, sdch"
  ]
  "accept-language" => array:1 [
    0 => "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2"
  ]
  "cookie" => array:1 [
    0 => "PHPSESSID=myphpsession; language=ru; currency=UAH"
  ]
]

如您所见,From 标头有效,但转储中不存在授权标头。 对我来说,似乎 laravel 在我的中间件之前使用并删除了 Authorization 标头,即使我已经为任何请求评论了默认中间件。

请帮助解决这个问题。或者也许有另一种更好的方法来在 REST API 中进行身份验证?如果有任何建议和批评,我将不胜感激。 谢谢。

【问题讨论】:

【参考方案1】:

问题不在Laravel,而是在 Apache Web Server 配置文件中。 将此行添加到.htaccess 文件到public 目录中。

RewriteRule ^ - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]

解决了这个问题。

附:

如果还有其他更好的方式来处理 REST API 授权 + Laravel,请发表评论。

【讨论】:

【参考方案2】:

我一直在寻找相同的答案,我发现此链接非常有用,其中包含使用 JWT LINK 的 L5 的详细信息和用法。

第二个解决方案是: JSON WEB TOKEN

它可以帮助你。

【讨论】:

以上是关于如何创建Laravel框架应用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Laravel 框架创建注册模式?

如何使用 laravel 4 框架创建文本文件和 JSON?

使用 laravel 框架时如何在 xampp 上创建虚拟主机

如何完全理解 Laravel 框架?

laravel框架数据迁移

Laravel框架中增加记录access log的日志中间件