Heim  >  Artikel  >  PHP-Framework  >  So verwenden Sie Middleware für die WeChat-Anmeldeautorisierung in Laravel

So verwenden Sie Middleware für die WeChat-Anmeldeautorisierung in Laravel

PHPz
PHPzOriginal
2023-11-03 10:55:461438Durchsuche

So verwenden Sie Middleware für die WeChat-Anmeldeautorisierung in Laravel

So verwenden Sie Middleware für die WeChat-Anmeldeautorisierung in Laravel

Mit der rasanten Entwicklung des mobilen Internets ist die Anmeldung über Dritte zu einer beliebten Möglichkeit für Benutzer geworden, sich schnell zu registrieren und anzumelden. Unter ihnen ist die WeChat-Anmeldung eine der beliebtesten. Für Entwickler ist die Verwendung der WeChat-Anmeldung zur Autorisierung auf ihren eigenen Websites oder Anwendungen ein häufiges Bedürfnis. In diesem Artikel wird erläutert, wie Middleware im Laravel-Framework zur Implementierung der WeChat-Anmeldeautorisierungsfunktion verwendet wird, und es werden spezifische Codebeispiele bereitgestellt.

Zuerst müssen wir das Laravel-Framework herunterladen und installieren. Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

composer global require "laravel/installer"

Geben Sie als Nächstes Ihr Projektverzeichnis im Terminal ein und führen Sie den folgenden Befehl aus, um ein neues Laravel-Projekt zu erstellen:

laravel new wechat-login

Nach Abschluss der Erstellung des Projekts müssen wir einige notwendige Installationen durchführen Abhängigkeiten. Geben Sie das Projektverzeichnis im Terminal ein und führen Sie den folgenden Befehl aus:

cd wechat-login
composer require overtrue/laravel-wechat

Als nächstes müssen wir das Laravel-Framework für die Anmeldung über WeChat konfigurieren. Öffnen Sie die Datei .env im Terminal und geben Sie den folgenden Inhalt ein: .env 文件,填写以下内容:

WECHAT_APPID=your_app_id
WECHAT_SECRET=your_app_secret
WECHAT_REDIRECT_URI=http://your_callback_url

其中,your_app_idyour_app_secret 需要替换为你自己的微信开放平台的应用ID和密钥。your_callback_url 是用户授权后的回调URL,需要与你的应用进行对接。

然后,我们需要创建一个中间件来处理微信登录授权逻辑。在终端中执行以下命令:

php artisan make:middleware WeChatAuthMiddleware

运行上述命令后,Laravel将会在 app/Http/Middleware 目录下生成一个 WeChatAuthMiddleware.php 文件。打开该文件,将以下代码添加到 handle 方法中:

<?php

namespace AppHttpMiddleware;

use Closure;
use EasyWeChatFactory;

class WeChatAuthMiddleware
{
    public function handle($request, Closure $next)
    {
        if ($request->has('code')) {
            $app = Factory::officialAccount(config('wechat'));
            $oauth = $app->oauth;
            $user = $oauth->user();

            // 保存用户信息或进行其他处理逻辑
        } else {
            $app = Factory::officialAccount(config('wechat'));
            $oauth = $app->oauth;

            return $oauth->redirect();
        }

        return $next($request);
    }
}

上述代码中,我们使用了 EasyWeChat 这个开源库来处理微信登录逻辑。我们在中间件中判断请求中是否包含了 code 参数,如果存在,则说明用户已经授权,我们可以通过该参数来获取用户的信息。如果不存在 code 参数,则说明用户尚未授权,我们需要进行微信登录授权的跳转。

接下来,我们需要将中间件注册到 Laravel 框架中。打开 app/Http/Kernel.php 文件,将以下代码添加到 $routeMiddleware 数组中:

'wechat.auth' => AppHttpMiddlewareWeChatAuthMiddleware::class,

然后,我们需要给某个路由或者路由组应用这个中间件。在 routes/web.php 文件中,将以下代码添加到路由闭包中:

Route::group(['middleware' => ['wechat.auth']], function () {
    // 添加需要微信登录授权的路由
});

现在,我们已经完成了在 Laravel 中使用中间件实现微信登录授权的配置。当用户访问被定义为需要微信登录授权的路由时,系统会先进行微信登录授权的检查,如果用户尚未授权,则会跳转到微信登录页面进行授权,授权成功后会再次返回到我们定义的回调URL,并包含了 coderrreee

Darunter müssen your_app_id und your_app_secret durch ersetzt werden Ihre eigene offene WeChat-Plattform. Die Anwendungs-ID und der Schlüssel. your_callback_url ist die Rückruf-URL nach der Benutzerautorisierung, die mit Ihrer Anwendung verbunden werden muss.

Dann müssen wir eine Middleware erstellen, um die WeChat-Login-Autorisierungslogik zu verwalten. Führen Sie den folgenden Befehl im Terminal aus: 🎜rrreee🎜Nachdem Sie den obigen Befehl ausgeführt haben, generiert Laravel eine Datei WeChatAuthMiddleware.php im Verzeichnis app/Http/Middleware. Öffnen Sie die Datei und fügen Sie den folgenden Code zur Methode handle hinzu: 🎜rrreee🎜Im obigen Code verwenden wir die Open-Source-Bibliothek EasyWeChat, um die WeChat-Anmeldelogik zu verarbeiten. In der Middleware ermitteln wir, ob die Anfrage den Parameter code enthält. Wenn er vorhanden ist, bedeutet dies, dass der Benutzer autorisiert wurde und wir die Informationen des Benutzers über diesen Parameter erhalten können. Wenn der Parameter code nicht vorhanden ist, bedeutet dies, dass der Benutzer nicht autorisiert wurde und wir zur WeChat-Anmeldeautorisierung springen müssen. 🎜🎜Als nächstes müssen wir die Middleware im Laravel-Framework registrieren. Öffnen Sie die Datei app/Http/Kernel.php und fügen Sie den folgenden Code zum Array $routeMiddleware hinzu: 🎜rrreee🎜Dann müssen wir dies auf eine Route oder Route anwenden Gruppen-Middleware. Fügen Sie in der Datei routes/web.php den folgenden Code zum Routenabschluss hinzu: 🎜rrreee🎜Jetzt haben wir die Konfiguration der Verwendung von Middleware zur Implementierung der WeChat-Anmeldeautorisierung in Laravel abgeschlossen. Wenn der Benutzerzugriff als Route definiert ist, die eine WeChat-Anmeldeautorisierung erfordert, prüft das System zunächst die WeChat-Anmeldeautorisierung. Wenn der Benutzer nicht autorisiert wurde, springt es zur Autorisierung zur WeChat-Anmeldeseite. Es kehrt zur von uns definierten WeChat-Anmeldeseite zurück. Die Rückruf-URL enthält den Parameter code, über den wir Benutzerinformationen erhalten können. 🎜🎜Das Obige ist eine Einführung und ein Codebeispiel zur Verwendung von Middleware für die WeChat-Anmeldeautorisierung in Laravel. Ich hoffe, dass dieser Artikel bei den WeChat-Anmeldeautorisierungsproblemen hilfreich sein kann, auf die Sie während der Entwicklung stoßen. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Middleware für die WeChat-Anmeldeautorisierung in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn