2

ユースケース:「単一のユーザー名」を持つ単一のユーザーは、再ログインせずに別のテナントで利用可能なデータを使用できる必要があります。

期待される流れ:

  1. ユーザー「A」がテナント 1 にログイン

  2. 彼はいくつかのアクティビティを実行し、テナント 1 のすべてのデータにアクセスできました

  3. 「テナントの切り替え」リンクをクリックすると、テナント 2 に関連するすべてのデータにアクセスできるようになります。

環境 :

  1. Grails v2.1

  2. spring-security-core v1.2.7.3

  3. マルチテナントシングル db v0.8.3

次の自動生成クラスを使用しています

  1. SpringSecurityTenantRepository

  2. SpringSecurityTenantResolver

コントローラーで次のコードを使用しましたが、機能しませんでした。

def switchedTenentId = params.switchedTenentId
if(switchedTenentId != null && !"".equals(switchedTenentId))
   {
     def currUser = springSecurityService.currentUser
     springSecurityService.currentUser.userTenantId = new Long(switchedTenentId)
   }

私はグーグルで検索しましたが、解決策は見つかりませんでした。ロジック、ソリューション、またはサンプル コードを知りたいです。

ありがとう

4

1 に答える 1

1

これが私がしたことです:

User u = User.get(springSecurityService.currentUser.id)
u.userTenantId = params.switchedTenentId.toInteger()
u.save flush: true
springSecurityService.reauthenticate u.username

それは魅力のように機能しました。

于 2015-06-05T10:44:18.303 に答える