我不确定我是否以正确的方式处理这个问题,但由于我遇到了问题,我认为我没有。
加载登录屏幕时,我必须发送公司 ID。
看起来像这样:
public ActionResult LogOn(string id)
{
var sb = new StringBuilder();
sb.AppendLine(string.Format("CorpID: {0}", id));
if(ViewBag.CorpID != null)
sb.AppendLine(string.Format("ViewBag.CorpID: {0}", ViewBag.CorpID));
Guid corpIdGuid;
if (!Guid.TryParse(id, out corpIdGuid) && string.IsNullOrEmpty(ViewBag.CorpID))
return null;
// the id passed in will take presidence over the
// viewbag unless it is blank then we use viewbag
// one way or the other viewbag.corpid should not
// be blank
if(!string.IsNullOrEmpty(id))
ViewBag.CorpID = id;
// Session["CorpId"] = id;
//Not a junk guid.. continue.
return View();
}
我需要这个来确定我们在本次会议期间将与哪家公司合作。
我遇到的问题是,当 cookie 超时(设置为 10 分钟)发生时,它会将他们引导回此登录,并且我不再有 corpid。
我尝试过viewbag
并且它正在被重置。
我尝试了 cookie,但由于它过期了,数据不再存在。
我尝试了配置文件管理器,但由于他们已记录它,这让我一无所有。
我该如何维护这个CorpId
当用户超时并返回登录屏幕时?我也需要为每个屏幕提供此信息。
任何投入将不胜感激!
您需要创建一个单独的 cookie 来标识公司ID它不会随着用户的会话而过期。Session["CorpId"]
将随着用户会话过期并且不起作用。
var corpCookie = new HttpCookie("CorpID", id);
corpCookie.Expires = DateTime.Now.AddDays(30.0);
HttpContext.Current.Response.Cookies.Set(corpCookie);
每次用户登录时,您都可以更新到期时间以使其成为滑动到期时间。要检索 cookie 值,请使用以下命令:
var corpID = HttpContext.Current.Request.Cookies.Get("CorpID").Value;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)