使用 Github 等第三方帐号登录 Laravel 应用
Laravel 的 Socialite 使得使用 Facebook、Twitter、Google、LinkedIn、GitHub 以及 Bitbucket 等第三方帐号登录 Larave 应用变得很容易实现。你可以把它们与已存在的用户进行第三方连接,也可以作为主登录机制。虽然 官方文档 中给出了一些步骤,但是很多朋友看完后依然不知道具体如何实现登录功能。今天我们以 Github 为例,详细列出其实现方法。
1. 安装 Socialite
通过 Composer 命令行安装:
$ composer require laravel/socialite
然后把其注册到 config/app.php 中:
'providers' => [ ... Laravel\Socialite\SocialiteServiceProvider::class, ...],'aliases' => [ ... 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ...],
现在 Socialite 已经注册到你的应用中了,下面我们来设置证书。
2. 创建 Github 应用
首先,你需要拥有一个 Github 帐号,之后到“Setting”–“OAuth applications”–“Developer applications”–“ Register new application ”,创建一个 OAuth 应用:
之后填写应用的信息:
其中的“ Authorization callback URL ”我们这里设置为“http://your-domain-name.com/auth/github/callback”,你需要根据你的应用实际来填写。创建完成之后在应用的详细页面就可以看到“ Client ID ”和“ Client Secret ”的值了。
3. 服务配置
打开 config/services.php 文件,在其中添加 Github 授权信息:
'github' => [ 'client_id' => 'your-github-app-id', 'client_secret' => 'your-github-app-secret', 'redirect' => 'http://your-callback-url',],
把第二步创建应用的“ Client ID ”和“ Client Secret ”以及“ Authorization callback URL ”的值填到上面。当然,你也可以在 .env 文件中定义三个环境变量,然后在 config/services.php 中通过 env() 函数获取。
4. 定义路由
在 routes.php 中添加下面的路由(你可以自定义为任何名称,这里为方便起见直接定义为下面的名称):
Route::get('auth/github', 'Auth\AuthController@redirectToProvider');Route::get('auth/github/callback', 'Auth\AuthController@handleProviderCallback');
下面我们来完成控制器中的这几个方法。
5. 控制器方法
在 Auth\AuthController 中添加下面方法:
public function redirectToProvider() { return Socialite::driver('github')->redirect(); } public function handleProviderCallback() { try { $user = Socialite::driver('github')->user(); } catch (Exception $e) { return Redirect::to('auth/github'); } $authUser = $this->findOrCreateUser($user); Auth::login($authUser, true); return redirect('/'); } private function findOrCreateUser($githubUser) { if ($authUser = User::where('github_id', $githubUser->id)->first()) { return $authUser; } return User::create([ 'name' => $githubUser->name, 'email' => $githubUser->email, 'github_id' => $githubUser->id, 'avatar' => $githubUser->avatar ]); }
上面只是实现的一般方法,当然你也可以按照自己的方法来实现。首先跳转到 Github,获得用户授权后再跳转回来到,然后根据 Github ID 查找用户并登录,或者创建一个新的用户。
6. 数据库设计
我们需要修改 users Migration 以便存储一些 Github 特定的信息。Github 会给我们返回很多信息,我们这里选择其中的一些进行存储。
$table->increments('id'); $table->string('github_id')->unique(); $table->string('name'); $table->string('email'); $table->string('avatar'); $table->rememberToken(); $table->timestamps();
由于我们这里是用于演示的,所以直接更改为了上面的样子,你可以根据你的实际需求来设计。Github 为我们返回的信息大致如下:
7. User Eloquent
修改 User Eloquent Model 以便能够存储 Github 的信息:
protected $fillable = ['name', 'email', 'github_id', 'avatar'];
下面我们来看看上面的这些代码是如何具体运行的。
8. 使用
在需要登录的地方添加下面的链接,其目标地址指向我们上面添加的路由 auth/github 。
当用户点击上面的按钮的时候,会跳转到 Github 授权页面,询问用户是否运行授权,当用户允许之后,会跳转回 auth/github/callback ,也就是我们创建应用时填写的“Authorization callback URL”。
之后就会执行回调函数中的代码,登录已经存在的用户,或者创建一个新的用户并登录。
现在我们已经拥有一个经过 Laravel 授权的用户了,可以直接使用 Auth 提供的所有方法,如 Auth::check() 、 Auth:user() 等。你还可以添加一个 logout 路由来运行 Auth::logout() 方法退出登录。之后的操作就可以同使用 Laravel 自带的认证系统一样了。
以上便完成了使用 Github 帐号登录 Laravel 应用的所有步骤,其他第三方应用的实现基本类似。
参考: laravel.com , mattstauffer.co

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La journalisation PHP est essentielle pour surveiller et déboguer les applications Web, ainsi que pour capturer des événements critiques, des erreurs et un comportement d'exécution. Il fournit des informations précieuses sur les performances du système, aide à identifier les problèmes et prend en charge le dépannage plus rapide

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Alipay Php ...

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.
