2016-11-12 102 views
0

我已經安裝了IS3/MR/IDM組合,一切工作正常。我現在需要做的是讓登錄的用戶(ID,Name等)可用於我的所有MVC控制器,所以顯而易見的選擇是創建一個基本控制器,以便所有其他控制器都從它繼承。跨客戶端應用程序訪問用戶對象

任何人都可以建議,如果這是實現這一目標的最好方法,也許提供一些示例代碼?

+0

你在什麼堆棧上?你需要用戶完成什麼?假設更新的.NET,MVC控制器上已經有一個User對象可以被轉換爲'ClaimsPrincipal'。 – beavel

回答

0

假設您已經對Identity Server 3進行了成功的身份驗證,則應該已經全部設置好了。如果您在CallApiController看,你會發現這個方法

 // GET: CallApi/UserCredentials 
    public async Task<ActionResult> UserCredentials() 
    { 
     var user = User as ClaimsPrincipal; 
     var token = user.FindFirst("access_token").Value; 
     var result = await CallApi(token); 

     ViewBag.Json = result; 
     return View("ShowApiResult"); 
    } 

用戶變量應該已經包含了用戶的姓名,身份證和這種要求。所以

var id = user.FindFirst(Constants.ClaimTypes.Subject).Value; 

var firstName = user.FindFirst(Constants.ClaimTypes.GivenName).Value; 

var middleName = user.FindFirst(Constants.ClaimTypes.MiddleName).Value; 

var lastName = user.FindFirst(Constants.ClaimTypes.LastName).Value; 

當然,所有的假設,你有你的用戶信息存儲的信息,我不檢查,如果它們不存在,將發生的錯誤。