我有一個帶有 OData API(都是 .NET Framework)的 MVC 應用程式,它們支持多個身份驗證/身份提供程式。問題是宣告型別在某些情況下不一致 - 例如,用戶 id 的 sub vs uid。.NET Framework 中是否有推薦的方法來提供宣告型別映射功能?
我正在考慮創建一個 ActionFilter 并在啟動期間傳入一個 ILookup 或其他我相信會起作用的東西,但我只是想知道是否有更好的方法來處理它。
謝謝
uj5u.com熱心網友回復:
找到了我的解決方案。
我正在使用自定義 ClaimsAuthenticationManager (System.Security.Claims) 實作來重新映射宣告型別并在需要時添加自定義宣告:
public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
{
if (incomingPrincipal.Identity.IsAuthenticated)
{
ClaimsIdentity identity = (ClaimsIdentity)incomingPrincipal.Identity;
AddUserIdClaim(identity);
AddUserNameClaim(identity);
AddUserEmailClaim(identity);
RemapGroups(identity);
}
return incomingPrincipal;
}
它在 Global.asax.cs 中使用:
protected void Application_PostAuthenticateRequest()
{
ClaimsPrincipal currentPrincipal = ClaimsPrincipal.Current;
CustomClaimsManager customClaimsTransformer = new CustomClaimsManager();
ClaimsPrincipal tranformedClaimsPrincipal = customClaimsTransformer.Authenticate(string.Empty, currentPrincipal);
Thread.CurrentPrincipal = tranformedClaimsPrincipal;
HttpContext.Current.User = tranformedClaimsPrincipal;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/516093.html
標籤:C#网。网基于声明的身份
上一篇:將字典資料系結到WPF資料網格
下一篇:我得到Unabletomarshalresponse:ObjectoftypeClientErrorisnotJSONserializableduringlambdaexecution
