問題タブ [warden]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2859 参照

ruby - act_as_paranoid 削除されたユーザーをデバイス サインインで元に戻す

私はRails 3.1.3アプリを持っています。これはdeviseユーザー認証に使用し、acts_as_paranoid. パスワードの再作成、ユーザーのサインアップ、およびユーザーのサインイン時にアカウントが削除されないようにしたいので、削除された電子メールを提供した場合は、そのアカウントを取得し、再び有効にしてから、アクション (パスワードの再作成またはサインイン) を続行します。 )。

ただし、Users::SessionsController#createアクションでは、ユーザーの削除を取り消した後、Unauthorized エラーが発生します (ただし、ユーザーは表示されるはずです)。コードは次のとおりです。

削除取り消しの後に呼び出しを追加してresource.reloadも、何も変わりません。また、もう一度サインインすると、前回の試行で元に戻されたため、ユーザーは通常どおりサインインします。

なぜこうなった?create1 回の通話で削除を取り消してサインインするにはどうすればよいですか?

0 投票する
1 に答える
169 参照

ruby-on-rails - WardenのRails3ログに戦略名を保存します

認証にWardenを使用しており、非常に多くの戦略があり、どれが成功したかを追跡することは困難です。代わりに次のような行を配置します

Rails.logger.debug "Authenticated with SSO" if user

すべての戦略に対して、戦略メッセージをログに記録するための1行をどこかに配置したいと思います。成功したメッセージを保存するため、Wardenのどこかで利用できます。

どうやってするか?この線を入れるのに最適な場所はどこですか?

コールバックかそのようなものが必要だと思います:

https://github.com/hassox/warden/wiki/Callbacks

0 投票する
2 に答える
3211 参照

ruby - Sinatra Middleware でのセッションへのアクセス

私は Sinatra プロジェクトに取り組んでおり、後で使用するためにセッションにいくつかの変数を設定しました。

ヘルプが必要なシナリオは、ミドルウェア クラスのセッション オブジェクトにアクセスすることです。認証にウォーデンを使用しています。

Middleware クラスで以下のようなことをしたい:

そうする可能性はありますか?

考え?

0 投票する
2 に答える
3416 参照

ruby-on-rails - コントローラーテストでのスタブワーデン

コントローラのテストとWardenの使用に問題があります。

すべての例はスタブを指していrequest.env['warden']ます。これにより、を呼び出すときにコントローラーで問題が発生し、env['warden']が返されますnil

大まかな例として、これを使用します。

そして、このような単純なビフォアフィルター:

取得しnilます。

私はそれを使用controller.env['warden'] = ...して動作させることができました、そしてそれは動作します。これは理にかなっています。コントローラーレベルにあるので、私の質問は、すべての例を見たときに何が機能しないのかということだと思います。

私はこれを持っていますspec_helper

どんな助けでも素晴らしいでしょう!

0 投票する
1 に答える
820 参照

ruby-on-rails - devise と warden がユーザーにログインしないのはなぜですか

ログインが通過するユーザーセッションコントローラーの作成アクションは次のとおりです

この行

どうすれば誰でもログインできますか...私は考案するのに慣れておらず、ログインしようとしています.dbにアクティブなユーザーがいることは知っていますが、ログインできず、warden.authenticate行を見ると混乱します.電子メールとパスワードを渡さない...認証で何が起こっているのかを理解するのに役立つ助けがあれば幸いです

0 投票する
4 に答える
27389 参照

ruby-on-rails - デバイスでユーザーをログインするにはどうすればよいですか?

Rails アプリケーションを使用していますが、devise で大きな問題が発生しています。私はコントローラーを持っています:

問題は、ユーザーがログインしないことです。常にこの行で停止します

私は実際のgemファイルに大量のロガーを入れて、何も見えないかどうかを確認しましたが、これを修正する方法が本当にわかりません. この行をコメントアウトすると、ユーザーはログインしますが、電子メールがデータベースになく、任意のパスワードで機能する場合は失敗します (これは間違いなく正しい解決策ではありません)。

これを修正するにはどうすればよいですか?

アップデート

これは機能しますが、非常にハックなようです

0 投票する
2 に答える
9840 参照

ruby-on-rails - Devise Testingでキャッチされていないthrow:warden

Deviseのテストを始めたばかりです。なぜこのエラーが発生するのか理解できません::

これは私の仕様のコードです::

誰かがこの問題の修正を取得しましたか?問題があることは知っていますが、私の場合とは異なり、github彼らの場合は存在しませんでした。include Devise::TestHelpers

この行でエラーが発生しています::subject.current_user.should_not be_nil

0 投票する
1 に答える
555 参照

ruby-on-rails - Rails 3 Devise Wardenログインのセキュリティホールを塞ぐ必要があり、髪の毛が抜けます

ログイン機能に問題があります。

  1. ユーザーがログアウト リンクをクリックすると、すべてが正常に機能し、セッションが破棄され、ユーザーは別のユーザーとしてログインできるようになります。
  2. 現在サインインしているユーザーがブラウザーを閉じてログイン ページに戻った場合、またはユーザーが単に [戻る] ボタンを押してログイン ページに戻り、別のユーザーとしてサインインしようとした場合、ユーザーは以前にログインしたユーザーにリダイレクトされます。その特定のブラウザ上のアプリケーションに。
    これは望ましくない機能です。ユーザーがログイン ページに戻るかどうか、またはウィンドウを閉じてログイン ページに戻るかどうかに関係なく、ユーザーが任意のアカウントにサインインできるようにしたいと考えています。

    私は6つの異なる解決策を試しましたが、どれもうまくいきませんでした. コードに変更を加えても、ログイン機能は常に session[:warden.user.person.key] ハッシュからユーザー ID を取得し、ログイン テキスト フィールドに何が入力されても、それを使用してログインするようです。私はこのプロセスを制御しようとしましたが、すべての試みで失敗しました。

    私はアイデアを使い果たしました.これは私たちのシステムのセキュリティホールと見なされているため、いくつかの助けが必要です.
    コードについて他に何が欲しいか教えてください。セッション コントローラーのコードと私のルートを紹介します。

ルート

0 投票する
1 に答える
610 参照

ruby-on-rails - assert_routing は warden/devise のセットアップをバイパスします

私の (Rails 3.2) Test::Unit コントローラー/機能テストでは、assert_routing が次のエラーで失敗しています:

ルート付き:

コントローラー テストで Devise 2.0 認証を設定しています。

この回答Stubbing Warden on Controller Testsは、アプリケーションが実行される前でもラックが認証されている可能性があることを示しています。私のコントローラーテストが実行されており、すでに環境変数をセットアップしているはずなので、これは奇妙です。しかし、authenticate が呼び出された時点でrequest.env["warden"]は nil です。

そのラックは、Devise ヘルパーが環境変数をセットアップする前に実行されていますか? その場合、ルーティング ファイルをラック チェックする前に認証を設定するにはどうすればよいですか? 私の他のアサートはパスしますが、assert_routing は特殊なケースのようです。

編集:

#authenticate を呼び出す前にセットアップが実行されていることを確認し、Devise が実際に request.env['warden'] をWarden::Proxyオブジェクトで初期化していますが、#authenticate が呼び出されると、`request.env['warden'] は nil です。それは、ラックが別のスレッドまたは何かで実行されていることを意味しますか。とても紛らわしいので、私は何か間違ったことをしていると確信しています。-_-

0 投票する
1 に答える
357 参照

ruby-on-rails - Rails 3.2.2 および Devise 2.0.4 にアップグレードした後、ログアウトしてもセッションが破棄されない

Rails プロジェクトを rails 3.2.2 および Devise 2.0.4 にアップグレードした後、ログアウトできなくなりました。この問題は発生していません。代わりに、ログアウトをクリックしても適切にログアウト状態にならず、ユーザー オブジェクトは引き続き有効であり、current_user がまだ存在します。これが私のログにあるものです:

したがって、正しくルーティングされています。運が悪かったので、デバイスを再インストールしようとしました。

デバッグしようとして、次の行を挿入しました。

私のテンプレートに。私が見つけたのは次のとおりです。

ログアウトを試行するたびに Session_id と _csrf_token が変更されますが、warden.user.user.key は変更されません。(各文字列の最初の 10 文字を空白にしたことに注意してください)。

誰でもこの動作を説明できますか?

ありがとう!