問題タブ [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.
ruby-on-rails - 奇妙なデバイス/ワーデンフックエラー/動作
アプリケーションコントローラーのDeviseコールバックにコードを実装しました。まず第一に、これは正しい場所ですか?
私は両方を取得します
と
働くために。しかし、私はこのエラーを受け取ります
面白いのは、エラーメッセージにもかかわらず、データベースレコードが更新されることです。変。
ruby-on-rails - rspec を使用したカスタム デバイスおよび/またはウォーデン戦略のテスト
devise と warden のカスタム承認戦略につながるものはたくさんありますが、私が特に求めているのは、これらのソリューションを rspec でテストすることです。この質問に似ています: Devise でサインインできるユーザーのフィルタリング
この種の実装をテストするにはどうすればよいですか。Rails 3.1.1、Devise (最新) など
ruby - Devise と (warden) コールバックによる Ruby On Rails 認証
ユーザーモデルを使用し、スコープのないDeviseを使用しているレールアプリがあります。アプリに activeadmin gem も追加しました。Active Admin は、アプリケーションに管理ダッシュボードを追加するために使用される gem です。ユーザーのログインに Devise を使用し、管理者用に別の admin_user モデルを作成します。
ログインしていない匿名のユーザーがショッピング カートを作成し、session[:cart_id]
. ユーザーがログインした場合、ユーザーをカートに関連付けたい
私は Wardens callbacks wardens callbacksを使用してこれを実装することを計画していました。
ただし、それを行うとエラーが発生します。
<% unless user_signed_in? %>
エラーをスローします:admin_user user is not logged in
誰が何が起こっているのか考えていますか?
関連する質問を見てきましたが、助けにはなりません:
Rails で Warden/Devise after_authentication コールバックからセッションにアクセスする方法
ruby-on-rails-3.1 - Ruby on Rails と Devise Gem を使用して未確認のユーザーをリダイレクトする方法
ユーザーが確認されていない場合にユーザーを別のページにリダイレクトする方法で、devise のユーザー サインイン動作を変更したいと考えています。
私の中に次のコードがありますapp/controllers/sessions_controller.rb
:
ユーザーが正しいユーザー名/パスワードを入力しても確認されない場合、Warden はエラーを発生させ、ユーザーをサインイン ページ (コード 302) にリダイレクトします。同時に、これは flash[:alert] を「未確認」にします。
未確認のユーザーを特定のページにリダイレクトする方法はありますか?
これを回避するための私のアイデアは、flash[:alert] 値を読み取り、値が「未確認」であるが、ワーデンがユーザーに関する追加データを送信していない場合は適切なページにリダイレクトすることでした。
ruby-on-rails - Rails 3 warden NameError (キャッチされないスロー「warden」):
これがどのように機能するかです: 管理パネルにログインし、cars/new に移動してフィールドに入力し、create を押すと、リストに新しい車が表示されます。www.autozeep.com
問題は、[作成] ボタンを押して新しい車を作成するまで問題なく動作することです。サーバー ログには次のように表示されます。
開発モードではこれは正常に機能していますが、本番モードのサーバーではそうではなく、同じコードであり、何も変更されていません。サーバーログの詳細: http://pastie.org/3028350
users_controller: http://pastie.org/3028586
車を編集できます。正常に動作するので、cars_controller の update および edit 関数は問題ありません。cars_controller の new 関数と create 関数を確認しましたが、何が起こっているのかを理解できるようなものは何も見つかりませんでした。Cars_controller: http://pastie.org/3028452
助けてください、私はこのアプリをすでに実行しており、クライアントはこの問題が解決されるのを待っています. どうもありがとうございました。
編集
このエラーは、新しい車を追加したときにのみ発生します。車、ニュース、連絡先を編集できます。車以外のすべて。
問題が解決しました
この問題は jquery ライブラリによって引き起こされました。このフォームで dynamic_form を使用しているため、次の select_box で車の名前を選択すると、選択した車のモデルのみが表示されます。問題を調べてみると (私の先生と一緒に、私は自分では考えませんでした)、車を選択すると、「dynamic_carmodels」というプロセスがログで実行され、carmodels リストが更新され、この時点でセッション キーも更新されていることがわかります。通常、セッションキーが変更された場合、ログインしたときに開始したセッションは無効になり、「認証されていないエラー」が発生するのはそのためです。どのjqueryが問題を引き起こしているのかはまだわかりませんが、最終的にこれを解決しました。これは監視員の構成が原因ではありませんでした。
ruby-on-rails - ワーデンcustom_failure
API認証にはdeviseを使用しています。私はこのようなメソッドを上書きSessionController:create
しました:
ご覧のとおり、JSONで認証する場合はステータスコードで応答します。認証に失敗すると、次の応答が返されます。
このメッセージを変更するにはどうすればよいですか?warden.authenticate!
このメソッドをどこで上書きするかわかりません。
ruby-on-rails - Devise は更新された Rails 3.1 アプリで 401 を返し、わずかにカスタム ルートを使用します。
アプリを Rails 2.3.x から Rails 3.1.3 にアップグレードした後、ユーザーが管理パネルにログインできないようです。この投稿の時点で v1.5.3 の Devise の最新バージョンを使用しています。
POST
ルートへのAsession#create
は応答を返します401
(そして、すべてのパラメーターは適切に入力されているように見えます)。これは、Warden が Devise の戦略 ( :database_authenticatable
) の 1 つを使用してユーザーを認証しようとしたときに発生します。これが私のユーザーモデルです。
名前空間にオーバーライドDevise::SessionsController
があり:admin
ます (ログインは管理者専用で、管理者は独自のサイト レイアウトを持っているため、オーバーライドされます)。コントローラーには、レイアウト以外に特別なことは何もありません。
少しカスタマイズされたルートがあります。そのためのコードを次に示します。
csrf_meta_tag
レイアウトのヘッダーにビットがあり、そのApplicationController
中にprotect_from_forgery
行があります。ページを再レンダリングするために戻ったとき、フォームのエラーは空です。
私はコードを ( に至るまで) ステップ実行しましたが、Warden は、私が使用している戦略が有効であるとはlib/warden/proxy.rb
考えていないようです (その部分の Warden のソース コード)。ユーザーは有効なユーザーです...有効なパスワードとすべてを使用して、Rails IRBセッションを介してゼロから作成しました。それが有効であると認識されることを願っていますよね?それとも、私は正しい木を吠えていますか?:database_authenticatable
rails console
ruby-on-rails-3 - cookie/session を介する代わりに、デバイス/warden セッション ID をパラメーターとして渡す
API を開発していて、認証されたユーザー セッションをサポートしたいと考えています。ユーザーが認証された後に、devise/warden が使用するセッション情報を渡すことは可能ですか? TokenAuthenticatable を使用できることはわかっていますが、セッション ID はしばらくすると期限切れになり、セッションごとに期限切れになる可能性があるため、セッション ID の方が優れていると思います。
ワーデンが次のように設定していることがわかります。
warden.user.user.key"=>["ユーザー", [4975], "Ejm5RbQhYVnNYFU7wX2o"]
GET または POST パラメータを介して何らかの形式でこれを参照することは可能ですか? これは賢明ですか?
ありがとう
ruby-on-rails - Devise: rememberable は、last_sign_in_at が trackable によって更新されないことを意味します
私はDeviseを使用しており、ユーザーモデルのlast_sign_in_atに依存して、顧客がX日以内に戻ってこない場合に対処しています。しかし、最近、last_sign_in_at は、記憶可能なものを含めるためにユーザーが自動的にログインしたときではなく、実際のフォーム ログイン イベントが発生したときにのみ更新されることを発見しました。
ユーザーがフォームを使用してログインしたか、記憶可能な Cookie によって自動的にログインしたかに関係なく、ユーザーがログイン (新しいブラウザー セッション) するたびに last_sign_in_at が更新されるようにするには、どうすればよいですか?デバイス互換の方法?
ruby-on-rails - Warden ::Managerafter_authenticationコールバックの問題
Rubyが私の最初の言語であれば、これはおそらく私にとっては簡単でしょうが、とにかく、ここに私の質問があります:
Rails 3.1を使用して、DeviseでWarden Managerコールバックの一部にアクセスし、ユーザーがサインインするたびに新しい「カート」を作成しようとしています。このロジックをApplicationControllerに配置しています。問題は、カートを作成するときに、ユーザーIDを指定したいということです。Deviseのヘルパーメソッドcurrent_userを使用しようとしましたが、機能していません。
最も重要なのは、Warden::Managerブロック内からヘルパーメソッドまたはApplicationControllerで定義されたメソッドにアクセスできない理由を知りたいことです。ただし、以下に示すようなエラーが呼び出されることなく、ブロック内でDeviseのcurrent_userメソッド(および以下に示すcurrent_cartメソッド)を使用できるように、コードを編集する方法も知りたいです。
これが私のコードです:
エラーは次のとおりです。