問題タブ [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.
spring-security - Spring Security を使用したセッション管理: 同時セッション
春のセキュリティを使用して Web アプリケーションを開発しました。ログインの場合、LDAP からアクセスできます。ここで、Spring Security 自体を使用してセッションを管理したいとauthentication.getName()
思いusername
ますsessionID
。
ここで、同じユーザーが他のブラウザーを使用して同じシステムからログインしようとしているかどうかを確認したいと思います。彼は自分のアカウントに既にログインしているというメッセージを受け取るはずです。
誰でもこれを達成する方法を教えてもらえますか????
これを使用して他のブラウザを使用してログインしようとすると、次のエラーが表示されます。
nhibernate - Castle Windsor IScopeAccessor を実装して、LifestyleScoped を使用して ViewModel ごとに NHibernate セッションを提供する方法
ViewModel ごとに NHibernate セッションを提供できるようにする、IScopeAccessor の実装を作成する、または新しいソリューションを見つけるための助けを探しています。
Windsor がスコープ付きのライフスタイルをサポートするようになったことは知っています (こちら)。ただし、この例では、using ブロックを使用して特別なスコープを作成し、using 内で container.resolve を呼び出しています。
コンテナを渡したくないので、これを機能させる方法は考えられません。また、必要に応じて動的に発生する、作成される ViewModel にスコープを関連付けたいと考えています。
別の方法として、Krzysztof Koźmic (ここ)によると、IScopeAccessor の実装を作成できるようです。
「...好きなスコープを提供してください。スコープはここでは抽象的な用語であり、何でもかまいません。」
残念ながら、Web ベースのシナリオに固有ではない IScopeAccessor の実装を見つけることができず、「何か」を有効なスコープに変えるために何をする必要があるかを正確に理解するのに苦労しています。
Ninject (http://www.emidee.net/index.php/2010/08/23/ninject-use-one-database-session-per-view-model) を使用してやりたいことの正確な例を見つけました。 /):
Ninject では、InScope は、コールバックによって返されたオブジェクトが存続している限り、バインディングによって作成されたインスタンスを再利用する必要があることを示します。基本的に、このコールバックはルート レベルの ViewModel を返します (ViewModel はネストできるため)。
Windsor を使用して同じことを行う方法や同じ結果を得る方法について何か考えはありますか?
node.js - Express-session-mongo と独自のローリングの利点
私は nodejs/mongo を初めて使用するので、express-session-mongoについて知らなかったため、独自のセッション ミドルウェアを展開することになりました。
私のミドルウェアでは、(express のセッション ミドルウェアを介して) セッションにユーザー ID を保存し、リクエストごとにログインしているユーザー オブジェクトを読み込みます。また、「remember me」機能のために、ユーザーがユーザー/パスを httpOnly Cookie に保存できるようにします。
そのnpmのドキュメントページには、何かが望まれています。
私の質問は次のとおりです。そのモジュールと私が書いたものの利点は何ですか? 私は愚かなことをしていますか?彼らのすることは、私がすることよりも優れていますか?
python - セッション管理用の Python モジュール
Perl の CGI::Session や Apache::Session のようなセッション管理用の同等のモジュールはありますか? (ほとんどの Python Web フレームワークには独自の実装があることは知っていますが、任意の Python アプリケーションで使用できるスタンドアロン モジュールを探しています。)
netty - ハンドシェイク中またはハンドシェイク中の Netty カスタム固有チャネル ID
クライアント/サーバー チャットの例を使用してSSL
要件を実装しました。私の要件の主要部分はsession management
.
したい:
- クライアントからサーバーへの
SSL
( ) 個の「トンネル」を作成するTLS
- (
SSL tunnel
)channel
は、特定の要件が満たされた場合にのみ開かれ、利用可能になります。そうしないと、チャネルと接続がすぐに閉じられます。 - 要件が満たされているかどうかを確認します。計画は、クライアント
ID
がサーバーに送信することです。はID
、たとえば 、 、 、 などを使用して組み立てられますclient-PC-ID
。Username
これIP-Address
はTimestamp
およびID
として使用channel ID
できるClient-Sesion-ID
ため、サーバーはユーザーの位置を特定/追跡/識別できます。
接続を作成するときSSL
、構成が作成されたら、handshake()
メソッドを実行しています。次に、接続が作成され、ランダムInteger
が として使用されますChannel-ID
。したがって、サーバー側でID
は、クライアントの s があり、クライアントにメッセージを送信できます。ID
しかし、としても使用できる独自の が必要ですsession ID
。そして最も重要なことは、クライアントがこれらID
の を作成し、それらを使用して「ログイン」することです。ID
したがって、クライアントによって作成されたを使用して、サーバー側でTLS tunnel
( channel
) が開かれるか ( logged-in
) 開かれないか ( )を決定したいと考えていますno-access-to-log-in
。これには、クライアントが自己作成した一意のメッセージを送信する必要がありますID
ねhandshake
。
クライアントが有効な を送信するID
と、サーバーはSSL-Certificate
が有効かどうかなどを確認する必要があります。しかし、これは次のステップです。
問題は、ID
クライアントから送信されたをどのように使用できるかということです。それとも、これは不可能ですか?それとも必須ではないのでしょうか?それとも意味がないのでしょうか?
それに関するアイデアはありますか?
nhibernate - 非常にトラフィックの多いWebアプリケーションでのNhibernateセッション処理
1分あたり1000件のリクエストを処理する必要がある小さなWebアプリケーションを構築しています。
各リクエストは、データベースに1つの単純な行を書き込む必要があります。
読み取り用に第2レベルのキャッシュを実行しています。
この場合、リクエストごとにセッションを行うことはできますか?セッションを再利用する必要がありますか?このような状況のベストプラクティスは何ですか?
これは、C#、SQL SERVER 2008、ASP.NETGenericHandlerで記述されます。
ありがとう
c# - 要求ごとのセッション MVC アプリでの NHibernate の問題
ORM として NHibernate を使用して C# MVC 3 を作成しましたが、ほとんどのページの読み込みで奇妙な例外がスローされます。それらは主にクローズドセッションなどに関連しているようで、一般的な問題のほとんどを確認しましたが、ほとんど役に立ちませんでした. 例外には次のようなものがあります。
例外の壁についてお詫び申し上げます。それらは関連していると思われますが、コードに別のエラーが発生し、1 つまたは 2 つのエラーが発生する可能性があります。これらのことに対してランダムという言葉を使用するのは好きではありませんが、それらを呼び出す特定のコード行を追跡できないようです.ISessionオブジェクトに関連するコード行に表示されるようです. Global.asax ファイルの BeginTranscation メソッドで "Session is closed" 例外がスローされたことさえあります。
アプリケーションは、hibernate.cfg.xml で current_session_context_class の Web オプションを使用します。
私の疑いは、それが私のセッション管理コードに関連していることです。Web サイトは通常、約 10 個の AJAX リクエストを同時にロードします。複数のページが同時にロードされると、エラーがより頻繁に発生するようです。使用されるデータベースごとに 1 つずつ、合計 2 つのセッション ファクトリがあります。
関連する Global.asax コードは次のとおりです。
NHibernate プロファイラーで実行されているページを見てきました。セッションが BeginTranscation で開始されない場合もあれば、コミットされない場合もあれば、どちらでもない場合もあります。そして最も不可解なことに、それらは 3 回開始されても終了しないことがあります。
ISession オブジェクトへのすべての呼び出しは、次のコードによって管理されます (ファクトリごとに 1 つずつあります)。
上記のコードに従って、フラッシュ、コミット、セッションの破棄、および再オープンが行われない限り、アプリ全体で BeginTransaction または Commit への呼び出しはありません。皆さんがこれに当てることができる光は大歓迎です!
spring-mvc - SpringSecurityのセッション管理
SpringSecurityは初めてです。URLベースの認証を行う必要があります。この場合、URLのパラメーターとして毎回送信される一意の参照に基づいて、ユーザーを認証する必要があります。この参照をWebサービスに渡し、必要なデータを取得してから、ユーザーを認証します(そしてロールを設定します)。認証と承認の部分は正常に機能しています。
ただし、アプリケーションに再度アクセスしようとすると(URLに別の参照が含まれているため)、「SecurityContextHolderには匿名トークンが既に含まれているため...が入力されていません」と表示され、前のリクエストの詳細が表示されます。SecurityContextHolder.getContext()。setAuthentication(null)とSecurityContextHolder.clearContext()を使用してセキュリティコンテキストをクリアしようとしました。
この後、私はアプリケーションに複数回アクセスすることができました。ただし、同僚のマシンから同時にアプリケーションにアクセスしようとすると、空白のページが表示されます。ログを確認すると、「SecurityContextHolderに匿名トークンが入力されていません...」というメッセージが表示されます。私もセッションを設定しようとしましたが、どこでトラックを失っているのかわかりません。
以下は私のweb.xmlです(春のセキュリティ部分のみ):
spring-security.xml:
さらに情報が必要な場合はお知らせください。
編集:ログの追加。
最初のリクエストの場合:
2013-02-07 17:27:38,834 DEBUG [http-8081-2] [org.springframework.security.web.context.HttpSessionSecurityContextRepository.readSecurityContextFromSession(127)]-現在HttpSessionは存在しません2013-02-07 17:27: 38,834 DEBUG [http-8081-2] [org.springframework.security.web.context.HttpSessionSecurityContextRepository.loadContext(85)]-HttpSessionから使用できるSecurityContextがありません:null。新しいものが作成されます。
2番目のリクエストの場合(セキュリティコンテキストの詳細は最初のリクエストの詳細であることに注意してください):
2013-02-07 17:27:54,272 DEBUG [http-8081-2] [org.springframework.security.web.context.HttpSessionSecurityContextRepository.readSecurityContextFromSession(158)]-SPRING_SECURITY_CONTEXTから有効なSecurityContextを取得しました:'org.springframework.security .core.context.SecurityContextImpl @ 1017293c:認証:org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken @ 1017293c:プリンシパル:org.springframework.security.core.userdetails.User@35cd3811:ユーザー名:Internal @ 55881e6e1-7e61 -41bb-9257-b3c1acb96519; 守られたパスワード]; 有効:true; AccountNonExpired:true; 資格情報NonExpired:true; AccountNonLocked:true; 付与された権限:内部; クレデンシャル:[保護]; 認証済み:true; 詳細:org.springframework.security.web.authentication.WebAuthenticationDetails@ffffc434:RemoteIpAddress:10.188。182.107; SessionId:null; 付与された権限:内部 '
私の理解では、セキュリティコンテキストホルダーはすべてのユーザーの詳細を保存します。しかし、この場合、別のタブ/ブラウザからアプリケーションを起動することはできません。
php - ユーザーエージェントの変更後、PHPセッションが破棄されます
私はそのような住所を持っていますexample.com/page1
。たとえば、訪問者のユーザーエージェントは次のようになりますMozilla/5.0 (iPhone; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146
。実行するsession_id()
と、PHPセッションIDは12345です。一時フォルダー内に「sess_12345」ファイルが表示されます。すべてのセッション変数が含まれています。
いくつかの処理の後、私は彼/彼女をにリダイレクトしexample.com/page2
ます。訪問者のユーザーエージェントはこれに変更されます:Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146 Twitter for iPhone
。もう一度実行session_id()
すると、IDがまだ12345であることがわかります。しかし、「sess_12345」ファイルを確認すると、削除されていることがわかります。
これは、ユーザーが「TwitterforiPhone」アプリケーションから私のWebサイトにアクセスした場合にのみ発生します。ユーザーエージェントの変更によりセッションファイルが削除されたと思いますが、よくわかりません。原因は何ですか?
(この場合を除いて、セッションは正常に機能します。私はCakePHP 2.4を使用しています)