我正在调用一项服务,并且我需要在我提出的每个请求中传递用户的永久安全令牌。
为此,我将此方法添加到我的基本控制器类中:
protected UserData getUsr()
{
try
{
UserData usr = new UserData();
usr.SecurityToken = Session["secToken"].ToString();
MembershipUser mvcUser = Membership.GetUser(HttpContext.User.Identity.Name);
usr.Id = (int)mvcUser.ProviderUserKey;
return usr;
}
catch (Exception ex)
{
log.Debug("Could not create usr object", ex);
throw new Exception("Could not authenticate");
}
}
这里的问题是,有时 User.Identity 数据比会话数据更持久,导致用户看到他们已登录但随后他们的请求失败时发生奇怪的错误。
有没有更好的方法来存储这个令牌/我可以以这样的方式存储它,只要 User.Identity 对象过期,它就会过期吗?
此外,如果有人知道一些关于 HttpContext 和 MVC 授权过滤器的基本理解示例/文档,那就太好了。