asp.net mvC语言 创建联邦授权Cookie



我有一个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存在,所以我第一次得到我希望的结果。

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

事实证明这根本没有必要!我没有意识到我可以通过我的AD角色作为我的联盟索赔的一部分。这样我就不需要手动创建角色提供者,当用户通过身份验证时,他/她已经在同一声明中拥有关联的角色!这么容易多了,希望我从一开始就这么做了,可以节省很多头痛和工作时间!

最新更新