我正在調用一個服務,並且我需要傳遞用戶的永久安全令牌,並提供每一個請求。MVC在會話中保存一個令牌
爲了做到這一點,我添加了這個方法我的基本控制器類:
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的一些很好的基本理解示例/文檔,授權過濾器將會很棒。
您可以簡單地檢查其中一個值,令牌或User.Identity數據是否無效。然後用戶需要再次登錄 – middelpat
是的,但是這需要在MVC檢查授權過濾器的任何地方發生,否則他們可以進入頁面,並花費10分鐘時間填寫表單,以便僅因爲令牌過期而拒絕。 –
我看了一些其他的問題,並重寫MVC onauthorize方法是非常有效的。它並沒有完全解決這個問題,所以我要去尋找onauthenticate方法(不管是什麼),看看我是否可以重寫它。 –