Passport を使用して Node.js アプリケーションにソーシャル認証を提供する
パスワードは本質的に脆弱であることは周知の事実です。したがって、エンドユーザーが使用するアプリケーションごとに強力なパスワードを作成することを要求すると、事態はさらに悪化するだけです。
簡単な回避策は、既存のソーシャル アカウント (Facebook、Twitter、Google など) を介してユーザーを認証させることです。この記事では、まさにこれを実行し、この認証シリーズの最初の部分にこのソーシャル ログイン機能を追加して、Passport ミドルウェアを使用して Facebook および Twitter アカウントで認証できるようにします。
前回の記事をまだ読んでいない場合は、この記事で築いた基礎を基にして新しい戦略、ルート、ビューを構築するので、読むことをお勧めします。
ソーシャルログイン
初心者のために説明すると、ソーシャル ログインは、Facebook、Twitter などのソーシャル ネットワーキング サイトからの既存の情報を使用するシングル サインオンです。通常、ユーザーはすでにアカウントを作成しているはずです。
ソーシャル ログインは主に OAuth 2.0 などの認証スキームに依存します。 OAuth でサポートされているさまざまなログイン フローの詳細については、この記事を参照してください。ソーシャル ログインを処理するために Passport を選択したのは、Facebook、Twitter、Google、GitHub など、さまざまな OAuth プロバイダーに異なるモジュールを提供しているためです。この記事では、Passport-facebook モジュールと Passport-twitter モジュールを使用して、既存の Facebook または Twitter アカウントを介したログイン機能を提供します。
Facebook認証
Facebook 認証を有効にするには、まず Facebook 開発者ポータルを使用して Facebook アプリを作成する必要があります。アプリ ID とアプリ シークレットをメモし、設定 に移動し、Website セクションで Web サイト URL を指定してコールバック URL を指定します。応用。また、Contact Email フィールドに有効な電子メール アドレスを必ず入力してください。このアプリケーションは公開され、一般にアクセスできる必要があります。
次に、ステータスとレビューセクションに移動し、スライダーを Yes に回してアプリを公開します。 Facebook への接続に必要な構成情報を保持する構成ファイル fb.js を作成します。
リーリーFacebook ログイン ポリシー
Node アプリケーションに戻り、FacebookStrategy モジュールを使用して Facebook 認証の Passport 戦略を定義し、上記の設定を活用してユーザーの Facebook プロフィールを取得し、ビューに詳細を表示します。 リーリー
ルーティングの構成
次に、Facebook ログインを有効にし、ユーザーがアプリケーションに Facebook アカウントの使用を許可した後にコールバックを処理するためのルートをいくつか追加する必要があります。
リーリーデモ アプリケーションのログイン ページは次のようになります:
[Facebook でログイン]ボタンをクリックすると、Facebook での認証が試行されます。すでに Facebook にログインしている場合は、許可を求める次のダイアログ ボックスが表示されます。そうでない場合は、Facebook にログインしてからこのダイアログ ボックスを表示するように求められます。
このデモ アプリケーションによって提供される基本情報に加えて、適切なスコープを使用し、ユーザー プロファイルを通じて受信したアクセス トークンで Facebook API を使用することによって、同じ認証メカニズムを使用することもできることに注意してください。
Twitter認証
Twitter 経由の認証を処理するために同様の認証モジュールを接続し、パスポート ツイッター モジュールを支援するためにパスポート チップを接続する必要があります。
まず、アプリケーション管理インターフェイスを使用して新しい Twitter アプリケーションを作成する必要があります。ここで注意すべき点は、コールバック URL を指定するときに、コールバック URL フィールドに「localhost」を指定した場合、Twitter はうまく機能しないようだということです。開発中にこの制限を克服するには、「localhost」の代わりに特別なループバック アドレスまたは「127.0.0.1」を使用できます。アプリケーションを作成した後、次に示すように、構成ファイル内の API キーとシークレット情報をメモします。 リーリー
Twitter ログイン ポリシー
Twitter のログイン戦略は、次の
TwitterStrategy现在要对此进行测试,请务必使用 当您允许应用程序访问您的 Twitter 帐户和有限信息时,登录策略中注册的回调处理程序为调用,然后用于将这些详细信息存储在后端数据库中 这就是你拥有的!我们成功地将 Facebook 和 Twitter 登录添加到示例应用程序中,而无需编写大量代码并通过让 Passport 完成繁重的工作来处理与身份验证机制相关的复杂问题。可以为 Passport 支持的各种提供程序编写类似的登录策略。整个应用程序的代码可以在此 git 存储库中找到。请随意扩展它并在您自己的项目中使用它。
のインスタンスです:
passport.use('twitter', new TwitterStrategy({
consumerKey : twitterConfig.apikey,
consumerSecret : twitterConfig.apisecret,
callbackURL : twitterConfig.callbackURL
},
function(token, tokenSecret, profile, done) {
// make the code asynchronous
// User.findOne won't fire until we have all our data back from Twitter
process.nextTick(function() {
User.findOne({ 'twitter.id' : profile.id },
function(err, user) {
// if there is an error, stop everything and return that
// ie an error connecting to the database
if (err)
return done(err);
// if the user is found then log them in
if (user) {
return done(null, user); // user found, return that user
} else {
// if there is no user, create them
var newUser = new User();
// set all of the user data that we need
newUser.twitter.id = profile.id;
newUser.twitter.token = token;
newUser.twitter.username = profile.username;
newUser.twitter.displayName = profile.displayName;
newUser.twitter.lastStatus = profile._json.status.text;
// save our user into the database
newUser.save(function(err) {
if (err)
throw err;
return done(null, newUser);
});
}
});
});
})
);
配置路由
// route for twitter authentication and login
// different scopes while logging in
router.get('/login/twitter',
passport.authenticate('twitter')
);
// handle the callback after facebook has authenticated the user
router.get('/login/twitter/callback',
passport.authenticate('twitter', {
successRedirect : '/twitter',
failureRedirect : '/'
})
);
/* GET Twitter View Page */
router.get('/twitter', isAuthenticated, function(req, res){
res.render('twitter', { user: req.user });
});
http://127.0.0.1:
<port></port>
而不是使用 http: //localhost
:<port></port>
.正如我们上面已经提到的,在使用“localhost”作为主机名与 Twitter 交换令牌时似乎存在问题。单击使用 Twitter 登录按钮时,正如预期的那样,它会请求用户同意允许此应用程序使用 Twitter。结论
以上がPassport を使用して Node.js アプリケーションにソーシャル認証を提供するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Node.js はサーバー側の JavaScript ランタイムであり、Vue.js は対話型ユーザー インターフェイスを作成するためのクライアント側の JavaScript フレームワークです。 Node.js はバックエンド サービス API 開発やデータ処理などのサーバー側開発に使用され、Vue.js はシングルページ アプリケーションや応答性の高いユーザー インターフェイスなどのクライアント側開発に使用されます。

Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

MySQL データベースに接続するには、次の手順に従う必要があります。 mysql2 ドライバーをインストールします。 mysql2.createConnection() を使用して、ホスト アドレス、ポート、ユーザー名、パスワード、データベース名を含む接続オブジェクトを作成します。 connection.query() を使用してクエリを実行します。最後に connection.end() を使用して接続を終了します。

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。
