2010-03-03 22 views
7
protected void Button2_Click(object sender, System.EventArgs e) //logout 
{ 
    if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) 
    { 
     System.Web.HttpContext.Current.Session.Abandon(); // it isn't logout >_< 
    } 
} 

cách đăng xuất? : Pcách đăng nhập trong tư cách thành viên ASP

Trả lời

10

Nếu bạn đang sử dụng các nhà cung cấp thành viên tiêu chuẩn và hình thức xác thực:

FormsAuthentication.SignOut(); 
HttpContext.Current.Session.Abandon(); 

Thông thường một công trình xử.

Lưu ý rằng nếu người dùng nhấn trở lại trong trình duyệt của họ, họ có thể sẽ thấy phiên bản được lưu trong bộ nhớ cache (đã đăng nhập).

Chỉnh sửa để đáp ứng với bình luận

Tôi đã theo ấn tượng rằng FormsAuthentication.Signout:

Loại bỏ vé các hình thức xác thực từ trình duyệt.

Và đó là vé xác thực là hoàn toàn tách biệt, và không liên quan đến phiên thẻ, nếu bạn muốn hoàn toàn rõ ràng tất cả kiến ​​thức của người sử dụng từ các máy chủ tại thời điểm đó, gọi Session.Abandon là một điều tốt để làm. Tôi biết rằng một phiên mới sẽ được tạo cho họ trên yêu cầu trang tiếp theo - tôi muốn được quan tâm để xem tài liệu ngược lại.

+0

Session.Abandon không nên được sử dụng khi đăng xuất khỏi người dùng. FormsAuthentication.SignOut() nên làm tất cả công việc SignOut. –

+0

Tôi đã tìm thấy rằng nếu bạn không bao gồm cuộc gọi Session.Abandon(), nhà cung cấp vai trò sẽ kéo các vai trò cho người dùng đã đăng nhập trước đó vào lần tiếp theo khi ai đó đăng nhập. Điều đó không tốt. –

+0

@Shea Daniels: "Lần sau ai đó đăng nhập" từ cùng một máy? Tò mò, bởi vì nhà cung cấp vai trò phải làm việc với người dùng hiện đã đăng nhập và mã thông báo xác thực - Bạn gọi nhà cung cấp vai trò của mình như thế nào? –

2
FormsAuthentication.SignOut(); 
FormsAuthentication.RedirectToLoginPage(); 

Điều này sẽ đăng xuất người dùng và đưa anh ta đến trang Đăng nhập.

Các vấn đề liên quan