Tiếp tục nhận xét nhiều như câu hỏi, tôi không chắc liệu bạn có đang theo dõi thứ gì đó sẽ đăng xuất người dùng sau một thời gian nhất định bất kể hoạt động hay chỉ sau một khoảng thời gian không hoạt động.
Nếu bạn hài lòng để sử dụng các tiêu chuẩn ASP.NET mechanisms, điều này có thể được thực hiện cho bạn mà không cần bất kỳ công việc chính:
Thiết lập membership provider của bạn.
Đảm bảo rằng bạn authentication section định nghĩa một loginUrl:
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
Bạn có thể thiết lập một thời gian chờ khác hơn so với mặc định là 30 phút bằng cách sử dụng "thời gian chờ" thuộc tính trên forms element:
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="15"/>
</authentication>
này sẽ đăng nhập người dùng ra sau 15 phút không hoạt động trên trang web của bạn (hoặc với trình duyệt mở không có javascript "nhịp tim" hoặc nếu họ dành 15 phút trên một trang web khác).
Từ chối truy cập cho người dùng vô danh
<authorization>
<deny users="?" />
</authorization>
Sau đó đảm bảo rằng đăng nhập, đăng ký của bạn và các trang mật khẩu có thể bị lãng quên là thể truy cập đến tất cả người dùng sử dụng location Element:
<location path="Logon.aspx">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
<location path="Register.aspx">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
<!-- etc -->
Bằng cách này, khi xác thực của người dùng cookie hết hạn, chúng sẽ được chuyển hướng đến URL được chỉ định trong phần tử loginUrl của trang biểu mẫu của bạn.
Nếu bạn không sử dụng cơ chế ASP.NET chuẩn, thì có thể bạn nên triển khai mô hình loại "trang cơ sở" tốt hơn.
Tạo lớp mới kế thừa từ System.Web.UI.Page sẽ kiểm tra trạng thái đăng nhập của người dùng và nếu họ chưa đăng nhập/hết thời gian, sau đó chuyển hướng họ đến trang đăng nhập của bạn.
Trong các trang bị khóa, thay vì kế thừa từ System.Web.UI.Page, bạn kế thừa từ lớp trang cơ sở của bạn (ví dụ về loại thiết lập này để thực hiện một điều tương tự - cài đặt kiểm tra trên mỗi trang trang) có thể được nhìn thấy trong my answer here
trang đăng nhập của bạn có thể sẽ cần phải có một số khung busting JS trong nó để nhảy trở ra của iFrame:
if (top!=self.parent){
top.location=self.parent.location;
}
Hay bạn đang nói rằng bằng cách nhấn "trở lại", họ vẫn có thể xem các trang của bạn thông qua bộ nhớ cache của trình duyệt? Trong trường hợp này bạn sẽ cần phải được chơi đùa với các tiêu đề bộ nhớ cache trên mỗi trang:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Ok, tốt, trong trường hợp đó bạn cũng sẽ cần một JS timer đối tượng để thực hiện một Location. thay thế trang đăng nhập của bạn - có điều này trong một điều khiển người dùng trên mỗi trang (hoặc tốt hơn nữa, trong trang chủ của bạn) để tự động chuyển hướng người dùng sau khi n phút:
<script type="text/javascript">
setTimeout('location.Replace("/login.aspx")', 900000);
</script>
thời gian là trong mili giây, vì vậy điều này sẽ di chuyển chúng trong 15 phút, và không cần phải có toàn bộ khung công tác jQuery tại chỗ cho điều đó.
Bạn cũng có thể muốn nhìn vào thẻ meta refresh:
<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />
Mà sẽ buộc các trình duyệt để làm mới đến trang đăng nhập sau 15 phút (cái này thì tính bằng giây).
Bạn nên đánh dấu đây là câu trả lời sau đó để cứu mọi người dành thời gian cho nó –