問題タブ [spring-session]

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 に答える
159 参照

java - セキュリティで保護された Web サービスの使用 (Spring Session)

この例に示すようにアプリケーションを実装しました

http://spring.io/blog/2015/01/20/the-resource-server-angular-js-and-spring-security-part-iii

1つUiApplication(ポート 8080) と2 つ ResourceApplicationの s (ポート 8090 および 9000)があります。

認証は、Spring Session と Redis を使用した例に示されているように機能します。

私のシナリオは次のとおりです。

  • ユーザーがログインしていますUiApplication

  • ユーザーがResourceApplicationAにリクエストを送信

  • ResourceApplicationA がリクエストを受け取り、ResourceApplicationBを消費したい

私の問題: A がBResourceApplicationから 401 Unauthorized を受け取るResourceApplication

Aさんにリクエストを送ったユーザーのセッションは利用できますResourceApplicationか?

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

spring - Spring (HTTP) セッションに保存されたデータは、破棄中に Redis から削除されません

新しくリリースされた Spring Session コンポーネントで PoC を行っています。これは、セッションとセッションに保存されたオブジェクト/データの両方が保持される Redis リポジトリによってバックアップされます。

  1. アプリケーションでセッションが作成されました
  2. Redis CLI で「Keys *」コマンドを実行し、新しいエントリを確認しました (「spring:session:sessions:6b55103a-baf5-4a05-a127-3a9cfa15c164」など)。
  3. アプリケーションから、カスタム Bean をセッションに追加しました
  4. Redis CLI で "Keys *" コマンドを実行し、この Bean の新しいエントリをもう 1 つ確認しました ("\xac\xed\x00\x05t\x00\tcustomer1" のように、Bean には値が 'customer1' の文字列があったため)
  5. 30 秒の自動有効期限を設定し、その間アプリケーションを使用せずに残しました
  6. sessionDestroyEvent がトリガーされ、ApplicationListener を実装するリスナーでキャプチャされました
  7. Redis CLI で「Keys *」コマンドを実行すると、セッションの最初に作成されたエントリがなくなりましたが、カスタム Bean オブジェクト (customer1) はまだ Redis に残っていました

質問:

Redis Store をクリーンアップするのはユーザーの責任ですか? セッションに多くのデータ要素が保存されている場合、セッションの破棄 (ログアウトおよびタイムアウト イベント) 中に redis ストアから手動でそれらをクリーンアップする必要があります。

更新

この質問を投稿して (おそらく 3/4 分後) Redis-CLI に戻ってキーを一覧表示しましたが、Customer1 オブジェクトが見つかりません。つまり、ガベージ コレクションのように、Redis によって一定の間隔でクリーンアップが実行されるということですか?

0 投票する
0 に答える
5934 参照

spring - 組み込み Redis が実際の Redis サーバーに接続しようとすると、例外が発生します

Spring プロファイルに組み込みの redis を使用しようとしていdevます (cloud実際の redis に接続するプロファイルもあります)。

ただし、組み込みの redis 構成が実際の redis に接続しようとしているようです。

devプロファイルを実行すると、次のエラーが表示されます。

これJedisDataException NOAUTHは、実際の Redis サーバーで認証を有効にしており、実際のサーバーに接続しようとしているためです...

これが私のSpring構成です:

「開発」および「テスト」構成:

クラウド構成:

ここに私の依存関係があります:

プロファイル:

編集

これが私が得る例外であり、対応する構成を以下に示します。

編集した redis 構成は次のとおりです。

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

java - Spring Session は Web Flow の状態を保持しますか?

Spring Web Flow に適していると思われるウィザードがいくつかありますが、Web Flow は重要なフロー状態をサーバー側に保存しますが、どこにあるのかわかりません。私は迅速な統合と展開のサイクルを使用しているため、サーバーの再起動後の耐久性は必須です。

SessionBindingConversationManagerWeb Flow を使用してフロー状態を に保存すると思います。そのHttpSessionため、Spring Session はその状態を外部セッション ストアに保持します。これは正しいです?その場合、Spring Session を構成してアプリケーションに Web Flow コンポーネントを追加する以外に何かする必要がありますか?

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

java - Spring Session、Websocket、REST トークンのセキュリティ

現在、データベースの変更に関するリアルタイムの更新を取得するための REST API と Websocket ブローカー エンドポイントを含む Spring アプリケーションがあります。

基本認証で認証する組み込みの redis サーバーを使用して Spring Session プロジェクトに正常に移行し、セッション ID を後続のリクエストで x-auth-token ヘッダーとして使用できます。

私たちが抱えている問題は、Websocket を保護することです。Angular では、stomp.js / sockjs ライブラリのラッパー ディレクティブがありますが、Websocket アップグレード リクエストで x-auth-token ヘッダーを設定する方法がわかりません。

私たちは何か間違ったことをしていますか?この種のセキュリティスキームにアプローチするための推奨される方法は何ですか?

スタック:

  • トムキャット 7.0.57
  • 春のセキュリティ 4.0.0.RC2
  • スプリングセッション 1.0.0.RELEASE
  • 春 MVC 4.1.4
  • AngularJS 1.2.28
0 投票する
1 に答える
2889 参照

spring-session - spring-session で現在のセッションを取得する

これが私の質問です。私は、プロジェクトを実装するために顧客に提供するプラットフォームを作成しています。したがって、私のプラットフォームでは、、 、 などのSessionServiceメソッドを持つ を作成しました。春のセッションの前は、次のように見えました。getCurrentSessiongetAttributesetAttributegetCurrentMethod

@Override public HttpSession getCurrentSession() { if (this.session == null) { final ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); return attr.getRequest().getSession(true); // true == allow create } return this.session; }

見栄えが悪く、redisのような裏付けがありませんが、これは完全に正常に機能しました。に移行したいのですspring-sessionが、を使用しSessionRepositoryてユーザーの現在のセッションを見つけたいと思っていましたgetSession(String id)が、そこにはしか表示されません。IDはCookieに保存されていると思うので、それを使用するには、おそらくHttpServletRequestコントローラーからファサード、dbレイヤーに非常に近いサービスレイヤーにオブジェクトを渡す必要があります。これは私には非常に悪い考えのように見えるので、私の質問は次のようになります: currentSession を db レイヤーの近くに取得する方法はありますか? 私が考える1つの方法は、コントローラーを呼び出すインターセプターを作成することです。これにより、現在のセッションがリポジトリーまたはサービスに設定されますか? これが正しい方法かどうかはわかりません。

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

spring-security - 春のセッション リメンバーミー

春のセッションのサンプルを試してみましたが、とても興味深いです。

私は次のことをしようとしています。リクエストに基づいてセッション ID の TTL を変更したい安らかなサービスにスプリング セッションを接続しようとしています。

たとえば、安らかなサービスを利用しているクライアントは、オプションのオン/オフを覚えているかもしれません。

Remember me on の場合、TTL を 90 日として提供したいのに対し、remember me off の場合は TTL を 5 分に設定したいのですが、春のセッションでこれをどのように達成しますか。

また、ユーザーの同時セッションをどのように管理 (制限) するか、Spring セキュリティと統合することで同時セッションを実現できるか、Spring セッションで提供されるのと同じ機能です。

提案してください、どんな助けでも大歓迎です