私のアプリケーションでは、フォーム認証を使用してユーザーのサインインとサインアウトを行っています。
機能の 1 つは、管理者が他のユーザーのユーザー名を変更できることです。その場合、ユーザー名が変更されたユーザーをサインアウトする必要があります。
そうしないと、以前に Cookie が設定されているため、アプリケーションにアクセスしてエラー メッセージを受け取ります (ユーザー名が存在せず、一部の機能にユーザー名を使用する部分があるため)。
Forms-Authentication を使用してこれらのユーザーを強制的にログアウトするにはどうすればよいですか?
アップデート :
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);
}
顧客のグローバル フィルターで、ユーザーが存在するかどうかを確認し、存在しない場合はサインアウトします。しかし、それは機能していません。機能するということは、認証を通過してアプリケーションにアクセスできることを意味します。
前もって感謝します。