gpt4 book ai didi

c# - 保存关于联合 cookie 问题的自定义信息

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:51 25 4
gpt4 key购买 nike

您好,我在具有表单例份验证的 MVC4 应用程序中使用 acs federation。在登录期间,我的应用程序可以完美地工作以在 SSO 之后通过 gmail 等进行身份验证并重定向到主页。我想保存其电子邮件 ID 与数据库记录的电子邮件匹配的用户的代理 ID。但问题是一段时间后代理 ID 会自动删除并声明当我尝试通过此代码从其他页面访问代理 ID 时,我添加的 AgentID 已删除并显示为空。

((ClaimsIdentity)HttpContext.Current.User.Identity).Claims.Where(c => c.Type.Equals(ClaimTypes.Role)).FirstOrDefault();

当用户在输入 gmail 凭据后重定向时,登录方法如下。

     [HttpPost]
[ValidateInput(false)]
[AllowAnonymous]
public ActionResult SignIn()
{
UserRoles userObj=null;
Customer customerObj=null;
ClaimsIdentity identity = User.Identity as ClaimsIdentity;

var claimCollection = identity.Claims;
Dictionary<string, string> tempClaims = new Dictionary<string, string>();

foreach (Claim claim in claimCollection)
{
tempClaims.Add(claim.Type, claim.Value);
}

if (tempClaims["http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider"] != null)
{
string strIdentifier = string.Empty;


if (tempClaims["http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider"] == "uri:WindowsLiveID")
strIdentifier = tempClaims["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"];
else
strIdentifier = tempClaims["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"];


userObj = repository.Filter(f => f.EmailId.Equals(strIdentifier)).FirstOrDefault();


if (userObj != null)
{
identity.AddClaim(new Claim(ClaimTypes.Role, userObj.Role));


identity.AddClaim(new Claim(ClaimTypes.SerialNumber, userObj.AgentID.ToString()));




}

}


return User.Identity.IsAuthenticated ? RedirectToAction("Index", "Home") : RedirectToAction("Login");

}

最佳答案

您似乎已将 AgentID 添加为 ClaimTypes.SerialNumber 声明,但您尚未将新主体持久保存到联合 cookie 中:

var principal = new ClaimsPrincipal(identity);
var token = new SessionSecurityToken(principal);
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(token);

WriteSessionTokenToCookie 将使用您添加的自定义声明更新联合 cookie,以便您能够在后续请求中检索它们。

关于c# - 保存关于联合 cookie 问题的自定义信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15861152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com