【发布时间】:2012-01-25 01:04:17
【问题描述】:
目前我这样做是为了修改我在依赖方 Global.asax 中的角色声明。
void Application_AuthenticateRequest(object sender, EventArgs e) {
if (Request.IsAuthenticated) {
string[] roleListArray = Roles.GetRolesForUser(User.Identity.Name);
IClaimsPrincipal claimsPrincipal = HttpContext.Current.User as IClaimsPrincipal;
IClaimsIdentity claimsIdentity = (IClaimsIdentity)claimsPrincipal.Identity;
var roleclaims = claimsIdentity.Claims.FindAll(c => c.ClaimType == ClaimTypes.Role);
foreach (Claim item in roleclaims)
{
claimsIdentity.Claims.Remove(item);
}
foreach(string role in roleListArray)
{
claimsIdentity.Claims.Add(new Claim(ClaimTypes.Role, role));
}
HttpContext.Current.User = claimsPrincipal;
}
}
这是正确的方法还是有更好的方法在 STS 成功认证后修改依赖方的声明?
【问题讨论】:
-
您尝试过使用 ClaimsAuthenticationManager 吗?
标签: asp.net asp.net-mvc wif claims-based-identity