4

Devise と OmniAuth がどのように機能するかについていくつか質問があります。質問しようとしているものについて明確な説明が見つからなかったからです。ここでは、例として Facebook を使用します。

  1. ユーザーが Facebook のみを使用してサインインできるようにし、アカウントを作成できないようにしたい場合、引き続き Devise を使用できますか? それはまだ目的がありますか?

  2. 上記のFacebookルートに行くと、データベースに「ユーザー」が保存されますが、そのユーザーは同じIDのままですか、または再サインインするたびに削除/変更され、「新しいユーザー」になります。 ?

  3. OmniAuth を使用することは、私のアプリケーションにとってのみ何を意味しますか? 基本的にDeviseと同じですよね?第三者を通すだけ?

今、omniauth-facebookgem だけでアプリを作成しました。これは Devise と同じだと思いますが、すべての作業 (名前、電子メール、場所など) を単なる代替品のように行ってくれます。

私がこれらの質問をする理由は、ユーザーをリソースに割り当てたくないためです。OmniAuth はユーザーをある種のセッション テーブル (ログin) であり、実際のユーザーのテーブルではありません (列を永続的に保存します)。Devise 機能が必要ですが、単純に Facebook に置き換えます。私が理にかなっていることを願っています。

ありがとう。

4

2 に答える 2

3

さて、Devise はユーザー管理 gem であるため、すべてのユーザー セッション情報、パスワード、パスワードのリセット、確認などを管理します。登録とログインに関連するすべてのことは、devise によって処理されます。

ここで、omniauth ログイン (Facebook、Twitter など) を追加する場合は、omniauth を使用して、Facebook などのプロバイダーを使用してログインを処理する必要があります。

基本的に、Omniauth を使用すると、Facebook ユーザーをアプリ ユーザーにリンクできますが、Devise とは完全に連携します。

たとえば、Facebook サインアップを使用してユーザーが作成されると、デバイスとオムニ認証の両方の情報を持つユーザー テーブルに作成されます。したがって、ユーザーは自分の電子メールを使用してログインし、後でパスワードを作成することもできます。

Facebook は、データベースに保存されている各ユーザーに一意の ID を提供します。そのため、Facebook ログインで作成されたユーザーには、Devise で使用する電子メール アドレスと、Omniauth でログインするために使用する Facebook ID の両方があります。

両方を同じユーザー モデルと一緒に使用して、どのように実行するかを管理できます。

たとえば、ユーザーが omniauth ログイン後にパスワードを作成できるようにして、後で omniauth または devise のいずれかでログインできるようにすることができます。または、既存のユーザーが将来の使用のために Facebook アカウントをリンクできるようにすることもできます。

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2013-06-02T09:25:42.183 に答える
3

https://github.com/plataformatec/devise/wiki/OmniAuth:-概要

あなたのユーザーはあなたのユーザーです。Omniauth は、Oauth プロトコル ロジック全体を抽象化するアプリケーションへのインターフェイスを提供します。しかし、それは次のようなものです: ユーザーは自分の Facebook アカウントでサインインし、トークンを取得します。このトークンはアプリ内でユーザーにバインドされており、omniauth がユーザーを識別する方法です。

いいえ、Omniauth はデバイスと同じではありません。どちらも同じ目的 (アプリでのユーザー認証) に対処しようとしていますが、devise はアプリでの ID 提供の内部ロジック全体 (アカウントの作成、アカウントの登録、登録メール、アカウントの回復、セッションの管理、サインイン) をバンドルしています。 、サインアウト...)、Omniauth は、ユーザー アカウントを承認済みのサードパーティ アカウントにリンクし、その情報にアクセスするためのインターフェイスのみを提供し、残りは自分で行う必要があります。

しかし、それらは連携できます (devise を使用してアプリにローカルなアカウントを作成し、omniauth を使用してそれらのアカウントをサードパーティのアカウントにリンクし、(おそらく) Facebook の名前など、サードパーティのアカウントに基づいてユーザー アカウントの基本情報を入力します。メール、写真)。

セッション リポジトリは users テーブルから独立しているため、最後の段落で述べたことが起こる可能性はありません。

于 2013-06-02T09:27:45.250 に答える