2013-11-14 54 views
2

使用案例:具有「單一用戶名」的單個用戶應該能夠使用不同租戶中可用的數據而無需重新登錄。如何在Grails多租戶單一數據庫插件中切換用戶租戶ID,無需重新登錄

流量預計:

  1. 用戶「A」登錄到租戶1

  2. 他做了一些活動和

  3. 他點擊了能夠訪問所有租戶1個數據「切換租戶」鏈接,之後他應該能夠訪問與租戶2相關的所有數據。

環境:

  1. 的Grails 2.1

  2. 彈簧安全核心v1.2.7.3

  3. 多租戶單分貝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) 
    } 

我使用Google搜索,但沒有找到任何解決方案。我喜歡瞭解邏輯,解決方案或任何示例代碼。

感謝

+0

嗨sanjay,你能ping我你的郵件ID ..我面臨類似的問題 – Vish

+0

無法找到你的電子郵件 –

回答

1

這裏是我做過什麼:

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

它的工作就像一個魅力。