创建联合授权 Cookie
Creating Federation Authorization 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 时,我第一次得到了我希望的结果。
我的 home
控制器中有这段代码,这是加载的第一个页面,但我想也许这不是放置它的正确位置,因为我的 _Layout
文件是在我的 home
视图和控制器之前加载,我假设这就是我得到这个结果的原因。我的问题是,我应该在哪里获得这段代码来创建我的联合 cookie?
事实证明这根本没有必要!我没有意识到我可以将我的 AD 角色作为我的联邦声明的一部分。这样我就不需要手动创建角色提供者,并且当用户通过身份验证时 he/she 已经在同一声明中拥有关联的角色!如此简单,希望我从头开始就可以避免很多麻烦和工作日!
我有一个联合的 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 时,我第一次得到了我希望的结果。
我的 home
控制器中有这段代码,这是加载的第一个页面,但我想也许这不是放置它的正确位置,因为我的 _Layout
文件是在我的 home
视图和控制器之前加载,我假设这就是我得到这个结果的原因。我的问题是,我应该在哪里获得这段代码来创建我的联合 cookie?
事实证明这根本没有必要!我没有意识到我可以将我的 AD 角色作为我的联邦声明的一部分。这样我就不需要手动创建角色提供者,并且当用户通过身份验证时 he/she 已经在同一声明中拥有关联的角色!如此简单,希望我从头开始就可以避免很多麻烦和工作日!