Нет способа отказаться от сеанса извне сеанса.Вам придется проверять базу данных при каждой загрузке страницы, и если учетная запись была отключена, то выйдите из системы.Вы также можете добиться этого, используя HttpModule, который сделает вещи немного чище.
Например:
public class UserCheckModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
}
public void Dispose() {}
private void OnPreRequestHandlerExecute(object sender, EventArgs e)
{
// Get the user (though the method below is probably incorrect)
// The basic idea is to get the user record using a user key
// stored in the session (such as the user id).
MembershipUser user = Membership.GetUser(Guid.Parse(HttpContext.Current.Session["guid"]));
// Ensure user is valid
if (!user.IsApproved)
{
HttpContext.Current.Session.Abandon();
FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect("~/Login.aspx?AccountDisabled");
}
}
}
Это не полный пример, а метод извлечения пользователяиспользование ключа, сохраненного в сеансе, должно быть адаптировано, но это должно помочь вам начать.Он будет включать дополнительную проверку базы данных при каждой загрузке страницы, чтобы убедиться, что учетная запись пользователя все еще активна, но другого способа проверить эту информацию нет.