Asp.net mvc 创建联合身份验证Cookie

Asp.net mvc 创建联合身份验证Cookie,asp.net-mvc,cookies,ws-federation,Asp.net Mvc,Cookies,Ws Federation,我有一个MVC应用程序,它是联邦的,除了第一次加载站点时,它没有接收到我的授权cookie,我必须重新加载页面才能获得授权之外,一切都很好。似乎正在发生的是以下代码: MembershipUser user = Membership.GetUser(User.Identity.Name); var claims = new List<Claim> { new Claim(ClaimTypes.NameIdentifier, user.Email), new

我有一个MVC应用程序,它是联邦的,除了第一次加载站点时,它没有接收到我的授权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);
是在页面已经加载之后执行的,然后当我刷新cookie时,cookie就存在了,所以我得到了我第一次希望得到的结果


我的主控器中有这段代码,这是加载的第一页,但我想这可能不是放置它的正确位置,因为我的布局文件在主视图和主控器之前加载,我假设这就是为什么我得到这个结果的原因。我的问题是,我应该在哪里使用这些代码来创建我的联合cookie?

结果证明这根本不是必需的!我没有意识到我可以通过我的广告角色,作为我的联盟声明的一部分。这样,我就不需要手动创建角色提供程序,当用户通过身份验证时,他/她已经在同一声明中拥有关联的角色!这样容易多了,我希望从一开始就可以省去很多麻烦和工作日