如何檢查用戶是否通過身份驗證,並且會話在30分鐘後在頁面上有效。asp.net:檢查會話是否有效
回答
您必須在特定時間後讓會話過期。
因此,有你的web.config
一個部分,或者你必須添加把裏面的這個部分<system.web />
部分:如果您發現我們使用InProc
模式和超時是
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10" cookieless="false" timeout="30" />
30
現在它完全取決於你。
添加一個key
在Session
對象,當你可以找到任何WebForm
頁面。
public void btnLogin(object sender, EventArgs e) {
if (validUser) {
Session["authenticated"] = true;
}
}
並在需要時檢查Session["authenticated"]
。
Session
對象將在30分鐘的會話實例化中過期。
希望得到這個幫助。如果您遇到麻煩,請隨時留下評論。
在會議開始時,你可以通過Global.asax
存儲在會話狀態的一些鍵值:
void Session_Start(object sender, EventArgs e)
{
Session["userId"] = userId; // obtained from a data source or some other unique value, etc.
}
每當用戶進行頁面請求或回傳,在任何或所有網頁的頁面加載,檢查是否會話值爲null:
protected void Page_Load(object sender, EventArgs e)
{
if(Session["userId"] == null)
{
Response.Redirect("logout.aspx");
}
// do other stuff
}
如果是,那麼會話已過期,您可以重定向然後註銷頁面或什麼的。超時間隔在您的web.config
文件中定義。
是否有必要檢查每個頁面? global.asax中是否有任何事件? Noramlly我會檢查每頁的onload ... httphandlers也許? – 2010-04-08 08:09:12
我猜session_end不會工作...如何abt HttpApplication.BeginRequest?我可以檢查每個請求的有效性嗎? – 2010-04-08 08:14:51
@uj - 不是真的,因爲BeginRequest發生**在AcquireRequestState中獲取會話狀態之前 - 您需要掛鉤以檢查用戶會話狀態,以及潛在的PostAuthenticateRequest和Authorize/PostAuthorizeRequest事件 – 2010-04-08 08:20:12
假設你要麼鉤住standard ASP.NET membership providers或使用IIS基本/摘要式身份驗證,那麼你可以很容易地告訴我們,如果一個用戶使用證實:
if (Request.IsAuthenticated)
{
// User is authenticated, allow them to do things
}
如果他們的身份驗證令牌已過期(默認爲20分鐘對於Forms Auth,Windows auth應該對每個請求重新進行正確的驗證),然後在下次檢查時,IsAuthenticated將返回false。
您可以在用戶會話中存儲一個令牌,該令牌映射回其用戶帳戶(或者是其用戶名的散列或其用戶標識或類似內容),然後檢查請求中的兩個 - 如果它們不是'牛逼匹配,則會話已經失效:
// Get the current user, and store their ID in session
MembershipUser user = Membership.GetUser();
Session["UserId"] = user.ProviderUserKey;
要對此進行檢查:
if (null != Session["UserId"]) {
MembershipUser user = Membership.GetUser();
if (Session["UserId"] == user.ProviderUserKey) {
// User and session are valid
}
}
但說實話,這取決於你正在嘗試做的。
如果你想,如果用戶沒有登錄限制訪問您的網站的某些區域,那麼在配置機制,允許爲:
在你的web.config,您可以添加行像下面這樣:
<location path="SecureDirectory">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
這將拒絕所有匿名用戶訪問目錄/SecureDirectory/
和它下面的所有內容,並指導他們,而不是給你配置的登錄頁 - 爲授權元素的詳細信息,請參閱「How to: Configure Directories Using Location Settings」 。
- 1. 如何檢查每個會話的會話是否有效?
- 2. 如何檢查php會話是否有效?
- 3. 如何檢查現有會話是否失效?
- 4. Ruby on rails - Authlogic:定期檢查用戶會話是否有效
- 5. 如何檢查IDP中是否存在有效會話?
- 6. 如何檢查asp會話是否有效?
- 7. 檢查會話工廠是否有活動會話
- 8. 檢查url是否有效
- 9. 檢查是否有效
- 10. 檢查cherrypy是否有效
- 11. 檢查BitmapData是否有效
- 12. 檢查有效的Facebook會話
- 13. 檢查有效會話:isRequestedSessionIdValid()vs getSession(false)
- 14. 檢查有效用戶會話
- 15. 只有在tomcat中檢查會話id是否只有sessionId有效?
- 16. 在asp.net中檢查會話?
- 17. 如何檢查會話是否過期在asp.net
- 18. 測試Facebook會話是否有效?
- 19. 如何知道會話是否有效
- 20. 如何檢查會話是否存在?
- 21. Symfony2:檢查會話是否存在
- 22. 檢查會話是否超時
- 23. laravel 5.1檢查會話是否過期
- 24. 檢查會話是否仍然存在
- 25. 如何檢查會話是否超時?
- 26. 檢查會話是否超時在jquery
- 27. 檢查會話是否爲空或不
- 28. 檢查會話是否存在JSF
- 29. laravel檢查是否變量會話
- 30. cakephp - 檢查會話是否設置
如果您打算實施登錄系統,我建議您查看Asp.Net會員資格API – Midhat 2010-04-08 07:28:24