在我的應用程序中,我使用Forms-Authentication來登錄和註銷用戶。如何在其他用戶更改他/她的用戶名時強制退出用戶?
一個功能是管理員可以更改其他用戶的用戶名。在這種情況下,我需要註銷用戶名更改的用戶。
如果我不這樣做,因爲之前設置自己的餅乾,他們訪問應用程序和收到錯誤消息(因爲他們的用戶名不存在,有些情況下我用自己的用戶名某些功能部件)。
我怎麼能強制用戶進行註銷使用表單的身份驗證?
UPDATE:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string controller = filterContext.RouteData.Values["controller"].ToString();
string action = filterContext.RouteData.Values["action"].ToString(); ;
// Below returns the previous username, which does not exist anymore in db.
string userName = HttpContext.Current.User.Identity.Name;
UnitOfWork unitOfWork = new UnitOfWork();
if (!unitOfWork.UserRepository.UserExists(userName))
{
FormsAuthentication.SignOut();
filterContext.HttpContext.Session.Clear();
filterContext.HttpContext.Session.Abandon();
// I am not using Roles.
}
unitOfWork.Dispose();
base.OnActionExecuting(filterContext);
}
在我的客戶全局過濾,我檢查用戶是否存在與否,如果不是我簽出來。但是,它不起作用。我的意思是他們通過身份驗證並獲得應用程序訪問權限。
在此先感謝。
我認爲這表明用戶登錄。我想註銷其他用戶,其密碼由admin更改。那麼,我當然可以使用此代碼簽署該用戶註銷,但我怎麼能理解,他們的密碼是改變?換句話說,當這個方法應該被調用? –
很高興我提供的代碼是有幫助的。要回答您的其他問題(如何處理),請參閱我的答案中的更新。 –
再次感謝。我在我的自定義ActionFilterAttribute篩選器中使用您的代碼。在那裏,我檢查用戶名是否存在,如果不存在(當我更改我自己的用戶名時滿足這個條件),我簽署用戶。但是,問題依然存在。用戶的cookie保持不變,他可以訪問應用程序。有任何想法嗎 ?我用過濾器代碼更新了我的問題。 –