Không có cách nào để từ bỏ một phiên làm việc từ phiên 'bên ngoài' này. Bạn sẽ phải kiểm tra cơ sở dữ liệu trên mỗi lần tải trang và nếu tài khoản đã bị vô hiệu hóa, thì hãy đăng xuất. Bạn có thể đạt được điều này bằng cách sử dụng một HttpModule quá, mà sẽ làm cho mọi thứ sạch hơn một chút.
Ví dụ:
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");
}
}
}
Đây không phải là một ví dụ hoàn chỉnh, và các phương pháp lấy người dùng sử dụng một phím được lưu trữ trong phiên sẽ cần phải được điều chỉnh, nhưng điều này sẽ giúp bạn bắt đầu. Nó sẽ liên quan đến kiểm tra cơ sở dữ liệu bổ sung trên mỗi lần tải trang để kiểm tra xem tài khoản người dùng vẫn hoạt động, nhưng không có cách nào khác để kiểm tra thông tin này.
Điều này không chỉ dành cho phiên của người dùng hiện tại? Tôi muốn từ bỏ phiên của người dùng khác ... Một cái gì đó như Session (người dùng) .Abandon. – Testing123
@ Testing123 egrunin có nghĩa là mọi người dùng sẽ kiểm tra xem tài khoản của họ có hợp lệ hay không, nếu có, thì ứng dụng sẽ xóa cookie của họ. – guanome
Downvote vì bạn cần FormsAuthentication.SignOut(); – Juan