問題タブ [session-management]
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.
python - Appengine で Google のデフォルト認証を使用して、セッション (セッション期間、ユーザーのログイン元など) を追跡するにはどうすればよいですか?
誰がログインしているか、ログインしている時間、どこからログインしているかなど、GAE アプリからユーザーを追跡したいと考えています。Google が提供する認証メカニズムを使用してこれを行う良い方法は何だろうと思っています。
デコレーターと制約を簡単に追加しapp.yaml
て、ユーザーがログインしている場合にのみ特定のエンドポイントにアクセスできるようにすることができます。ただし、これでは必要な情報が得られません。
明らかに、Google は内部でセッション管理を行っています。何らかの方法でこれと対話することは可能ですか? そうでない場合、上記の情報を追跡するために活用できる、試行錯誤された他のアプローチはありますか?
grails - grails Webアプリケーションでshiroネイティブセッションを使用するにはどうすればよいですか?
現在、コントローラーとgspページの両方でデフォルトのHttpSessionオブジェクトを使用しています。
コントローラの場合:
GSPの場合:
「rememberme」機能が欲しいのですが。Shiroにはすでに組み込まれています。ただし、私が理解している限り、これを行うには、shiroネイティブセッションモード(Config.groovy:security.shiro.session.mode = "native")を使用する必要があります。デフォルトでは、セッション状態が保持されるため、Cookieの有効期限が切れるか、ユーザーがログオフする限り、オブジェクトはセッションに残ります。
私の理解は正しいですか?
次に、コントローラーを次のように変更する必要があります。
そしてこれに対する私の見解:
だから、私の質問は次のとおりです。
- そうですか?
- 以前の方法を使用してセッションにアクセスすることはできませんか?
- 一部の構成でデフォルトのhttpセッションをオフにする必要がありますか?
struts2 - Struts2 - SessionMap の invalidate() メソッドは本当にセッションを無効にしますか?
私は自分のアクションでSessionMap (org.apache.struts2.dispatcher.SessionMap<K,V>)
セッションを追跡するために a を使用しています。invalidate()
ログアウトには、SessionMap が提供するメソッドも使用します。
Tomcat が提供する webapp "manager" を使用して、サーバーのセッションを監視できます。webapp からログアウトするときは、メソッドを呼び出しますinvalidate()
。
しかし、このメソッドを呼び出した後、セッションは期限切れになりません!
Invalidate()
メソッドは、セッションに保存されたオブジェクトのみを削除します (たとえば、login()
セッションが存在する後に作成されたユーザー オブジェクト)。
私の説明が明確であることを願っていますが、どうすればこの問題を解決できますか? 前もって感謝します
私のコード:
そして、次のようにセッションを無効にします。
セッションは次のとおりです。
multithreading - 複数のスレッドにわたる Spring + Hibernate セッション管理
クライアント側からの各リクエストがサーバー側で複数のスレッドを生成するシステムを構築しています。各スレッドは、1 つ以上の DAO を使用します (一部の DAO は、同時に複数のスレッドで使用できます)。すべての DAO は@Autowired
、Spring によってスレッド クラスに注入 () されます。各 DAOSessionFactory
も注入されます。
これらの複数の DAO 間で Hibernate セッションを管理する適切な方法は何でしょうか。マルチスレッド環境のために問題が発生しないようにするためです (たとえば、異なるスレッドのいくつかの DAO が同時に同じセッションを使用しようとしているなど)。
Hibernate構成で指定hibernate.current_session_context_class=thread
し、DAOで毎回単純SessionFactory.getCurrentSession()
に作業を行うだけで十分でしょうか? 必要に応じて、スレッドごとにセッションを適切に検出して作成しますか?
winforms - Hibernate / Castle.ActiveRecord; セッション管理; Winフォーム
私の最初の実際の (テストではない) NHibernate/Castle.ActiveRecord プロジェクトは急速に発展しています。私は NHibernate/Castle.ActiveRecord を約 1 か月使用していますが、まだ WindowsForms アプリケーションでセッションを処理する方法がわかりません。
一般的な取り扱い方法は、私にはうまくいきません。
- SessionPerRequest、SessionPerConversation などはすべて WebApplications などでのみ機能します。
- 私が正しい場合、SessionPerApplicationは推奨されません/非常に危険です
- SessionPerThread は、WindowsForms スレッドという 1 つのスレッドしかないか、ボタンをクリックするたびに新しいスレッドを作成するため、あまり役に立ちません。最初のことは、アプリケーションがメモリを使いすぎて、古いオブジェクトをメモリに保持することです。ech ボタン クリック用のワーカー スレッドを使用すると、ロードされたオブジェクトがスレッドよりも長く存続するため、遅延読み込みを無効にします。
- SessionPerPresenter も機能していません。フォームで「サブプレゼンター」を開いて、ユーザーが参照オブジェクト (外部キー) を検索/ロード/選択できるようにすることが一般的であるため、プレゼンターが破棄される - どういう意味ですか?セッションは閉じられましたが、参照プロパティ (外部キー) を埋めるために「スーパープレゼンター」で使用されたオブジェクトです。
私は Google と bing を何時間も使用し、多くのことを読みましたが、私のケースに関する良い Web サイトを 1 つだけ見つけました: http://msdn.microsoft.com/en-us/magazine/ee819139.aspx。そこでは SessionPerPresenter が使用されますが、「サブプレゼンター」には、オブジェクト全体ではなく ID のみが与えられます! そして、この例には外部キーがなく、オブジェクトが「スーパープレゼンター」に返されるシナリオがないことがわかります。
質問
- windowsforms/desktop-application のセッション処理の他の方法はありますか?
- すべてのプレゼンターにセッション プロパティまたはセッション コンストラクター パラメーターを追加できますが、UI コード全体でセッション処理を行うのは適切ではないと感じています。
- 例外が発生すると、NHibernate は私にセッションを強制終了させたいと思っています。しかし、それが「のみ」のビジネスロジック例外であり、NHibernate-Exception ではない場合はどうなりますか?
例
私の問題のほとんどをカバーする例を作ろうとしています。
.
現在、次のユースケースがあります。これらはすべて、同じアプリケーションで同時に非同期で実行できます (使用は、プレゼンター間で切り替えるだけです)。
- BoxSearchPresenter のインスタンスを使用してオブジェクトを検索および選択する
- このユースケースの一部は、ProductSearchPresenter のインスタンスを使用して BoxSearchPresenter の基準を満たすことです。
- このユースケースの一部は、BoxEditPresenter のインスタンスを使用して、BoxSearchPresenter-instance の選択されたオブジェクトを編集および保存することです。
- UserSearchPresenter のインスタンスを使用してオブジェクトを検索および選択する
- このユースケースの一部は、UserEditPresenter のインスタンスを使用して、UserSearchPresenter の選択されたオブジェクトを編集および保存することです。
- このユースケースの一部は、ProductSearchPresenter を使用して、User.AssignedProducts に追加されるオブジェクトを検索および選択することです。
- ProductSearchPresenter のインスタンスを使用して、オブジェクトを検索および選択します。
- このユースケースの一部は、ProductEditPresenter のインスタンスを使用して、ProductSearchPresenter の選択されたオブジェクトを編集および保存することです。
これはユースケースの小さなコレクションにすぎませんが、私が抱えている問題はすでにたくさんあります。
- ユースケース 1. と 2. は、同じ UI スレッドで同時に実行されます。
- ユースケース 1.1。そして2.2。オブジェクトをロードしたプレゼンターが存在するよりも長く、このオブジェクトを使用する他のプレゼンターに選択されたオブジェクトを返します。
- ユースケース 3.1。2.2./1.1.からロードされたオブジェクトを変更する可能性があります。3.1より前。が開始されましたが、2.2./1.1. 3.1より前にコミットされています。オブジェクトは保存され、3.1 を「ロールバック」することはできません。
spring - Spring 3.1 MVC フレームワーク セッション管理
私の Web アプリケーションでは、注釈ベースのコントローラー (SPRING MVC) です。アプリケーションに SessionManagement を実装したかった
1.) アプリケーション内のどのページも 15 分間アイドル状態であってはなりません
2.) 通知のようなポップアップを 10 分目に開き、ユーザーにセッションの有効期限が切れたことを通知し、セッションをさらに 15 分延長するか、デフォルトでアプリケーションをログオフするオプションをユーザーに与える必要があります。
春のMVCには簡単な方法が必要だと思います(私は春の3.1を使用しています)。たとえば、コントローラーまたは applicationContext.xml に何らかの構成に注釈を付ける方法が必要です。何か方法があるに違いない!友人、方法を提案して助けてください。また、ここにサンプルを貼り付けていただければ非常に役立ちます。また、この sessionManagement の実装について順を追って説明していただけると大変助かります。
java - セッション オブジェクトの動作を理解できません
javax.servlet.http.HttpSessionのドキュメントについて混乱しています。
それは言います:
セッションは、複数のページ要求にわたって状態とユーザー ID を維持するために使用されます。セッションは、Cookie を使用するか、URL を書き換えることによって維持できます。
現在、Cookie と URL 書き換えの両方が、サーバー内のアプリケーション コード (つまり、私たちのコード) によって処理されます。
次に、セッションがいつと見なされるかについて次のように述べていますnew
。
サーバーは、クライアントがセッションに参加するまで、そのセッションを新しいものと見なします。クライアントがセッションに参加するまで、isNew メソッドは true を返します。true の値は、次の 3 つのケースのいずれかを示している可能性があります
。1. クライアントがまだセッションについて認識していない
2. セッションがまだ開始されていない
3. クライアントが選択していないセッションに参加します。このケースは、クライアントが Cookie のみをサポートし、サーバーから送信された Cookie を拒否することを選択した場合に発生します。サーバーが URL 書き換えをサポートしている場合、このケースは通常発生しません。
client has joined the session
. _
つまり、Web アプリケーション (または URL 書き換え) から Cookie を使用せず、次のようにします。
- IP A からサーバーへの POST
- サーバーから A への 200 OK
- IP A からサーバーへの POST
ステップ 3 では、session.isNew()
true または false が返されますか? ドキュメントからはわかりません。
false (つまり、セッションが新しくない) が返さsession.invalidate()
れ、新しいセッションを作成するために呼び出す必要がありますか?
これが私をさらに混乱させる理由は、クライアントが HTTP アプリケーションであり、Web ブラウザーではないコードをデバッグしているためです。ステップ 3では、サーバー コードに Cookie や URL の書き換えはありsession.isNew()
ませんが、返されません。 true
.
そのため、ボンネットの下で何が起こっているのかわかりません。
これを理解するのに役立つ情報はありますか?
c++ - 同じページの後続のリクエストでの Cookie の処理
C++ で独自の (マルチスレッド) ISAPI ベースの Web サイトを作成しており、正しいセッション管理を実装しようとしています。
問題は、新しいセッションを作成する必要があるときに、生成された Web ページで後続の要求を使用すると、セッションが 2 回作成されることです。
仕組みは次のとおりです。 - クライアントはhttp://localhostを要求し、Cookie を送信しないか、古いセッション ID を含む Cookie を送信します。- サーバーはセッション Cookie を見て、もう存在しないため、新しい Cookie を作成する必要があると感じます。新しいセッション ID を含む Cookie を含むヘッダーを準備し、完全なヘッダーをクライアントに送信します (これを次のように追跡しました)。 http live headers plugin in firefox とそれは正しいです)。また、ページなどのデータ (まだデータベースなどからのデータを処理しているため、本体データではありません) を準備し、その内容をクライアントに送り返します。- クライアントはこの新しいセッション Cookie を持つ必要があり、スタイルシート リンクを確認してすぐにスタイルシート リクエストhttp://localhost/cssを送信します。私のサーバーに。しかし...彼は、何らかの理由で、新しく受け取ったセッションIDではなく、古いセッションIDを使用してこれを行っています! - サーバーはこのリクエストを (再び存在しないセッション ID とともに) 確認し、別の新しいセッションを生成し、スタイルシート データと共に Cookie を含む新しいセッション ID を送信します。
そのため、クライアントは現在 2 つのセッション ID を受信しており、最初のページが上書きされるため、今後は 2 番目の ID を使用し続けますが、それでも最初のページは間違ったセッションを使用しています (または、実際には 2 番目のページが使用しています)。
これは問題ではないと言えるかもしれませんが、パーソナライズされたスタイルシートの使用を開始すると、最初のページに間違ったスタイルシートが表示され、ページが AJAX を使用してコンテンツを更新するため (利用可能な場合)、スタイルシートがクライアントがリフレッシュしない限り、リロードされることはありません。
では、これはこの種のことを行うときに常に存在する問題ですか? ブラウザーは、新しい Cookie を既に受信しているが、まだページを処理しているにもかかわらず、常に古い Cookie を送信しますか? これは、たとえば PHP にもある問題ですか?
注: 「代わりに php を使用する」か何かについてのすべての議論が始まる前に: 私は最初に PHP で書いた Web サイトを書き直しています。それは人気になり、毎時間何千人もの (実際の) 訪問者がいて、私のサーバー (Web サイトはたくさんのサーバーを投入できるほどのお金は稼げません)。C++ で記述することにより、PHP では 200 ミリ秒のリクエストが 2 ミリ秒かかります...すべてを最適化できます。この ISAPI を正しく開発するために時間を割くことにより、これは安全にマルチスレッド化され、マルチプロセス、マルチサーバー化することができます。そして何よりも、私は挑戦が好きです。
追加された注意: ブラウザーからすべての Cookie を完全に消去し、新しい Cookie を作成してクライアントに送り返すと、後続のスタイルシート要求がすぐに使用されるため、古いセッションが Cookie に存在する場合にのみ問題があるようです。指定されたセッション ID。これは、古いセッション ID が送信されたときに何か間違ったことをしているという証拠のようです... 既存の Cookie を最初に削除する必要がありますか? どのように?
追記: Cookie は 1 年前の有効期限で書き込まれます。
session - 異なるMagentoセッションタイプの違いは何ですか
Magentoで利用できるさまざまなセッションタイプの違いに関する情報を探しています。
コアセッション、カスタマーセッション、チェックアウトセッションがあります。しかし、どれをいつ使用するのか、どのように動作が異なるのかはよくわかりません。それらはすべて同時に有効ですか、それともチェックアウトセッションはコアセッションよりも早く無効になりますか?
java - Web サービスのユーザー認証とセッション管理のベスト プラクティス
タイトルの通り、Web サービスのユーザー認証とセッション管理、主にバックエンドの実装、特に Java (J2EE) を使用するためのベスト プラクティスは何か疑問に思っています。
誰かが主題について何かを発表しましたか? ユーザー認証を使用する場合、どのようなセキュリティ上の考慮事項に留意する必要がありますか? どのようなデザインパターンが関連していますか? セッションはどのように管理する必要がありますか? 適切に設計されたアーキテクチャとはどのようなものですか?
良い例、または悪い例として使用できる既存のシステムはありますか?