我有一个联合的MVC应用程序,一切都很好,除了我第一次加载网站它没有提取我的授权cookie,我必须重新加载页面才能获得授权。似乎正在发生的是这段代码:
*NOBODY
在页面已经加载后执行,然后当我刷新cookie时,我得到了我第一次希望的结果。
我在我的 MembershipUser user = Membership.GetUser(User.Identity.Name);
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Email),
new Claim(ClaimTypes.Name, user.UserName)
};
var identity = new ClaimsIdentity(claims, "Federation");
var principal = new ClaimsPrincipal(identity);
var token = new SessionSecurityToken(principal);
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(token);
控制器中有这个代码,它是第一个加载的页面,但我想也许这不适合放置它,因为我的home
文件之前已加载我假设的_Layout
视图和控制器是我获得此结果的原因。我的问题是,我应该在哪里创建这个代码来创建我的联合cookie?
答案 0 :(得分:0)
原来这根本没有必要!我没有意识到我可以将我的AD角色作为联合声明的一部分。这样我就不需要手动创建角色提供程序,并且当用户通过身份验证时,他/她已经在同一个声明中拥有相关角色!如此简单,希望我从头开始新的这样可以省去许多麻烦和工作日!