2010-06-29 43 views
0

登錄當用戶登錄到我的網站,當用戶驗證我有一個覆蓋ValidateUser和驗證用戶具有足夠的權限等淨會員提供商,通過永久性Cookie

然而自定義成員資格提供,當通過使用RememberMeSet的默認表單身份驗證實現'記住我'功能時,我還想要驗證第一個請求上的用戶。

當用戶使用持久cookie登錄時,是否有一些鉤子可以附加到該觸發器上?

回答

0

解決方法:

  1. 有像UserIsVerified什麼
  2. 會話變量這個變量設置爲true通過默認loginpage登錄時(或通過對等單點登錄)
  3. 創建方法Application_PreRequestHandlerExecute在global.asax中驗證UserIsVerified支柱是否已設置,如果沒有:執行相應檢查

爲什麼Application_PreRequestHandlerExecute?

On PreRequest會話和配置文件都可用。 .Net已經解釋了持久性cookie,因此你可能想要的每個信息都在那裏。當用戶檢查失敗時,您也可以執行重定向,因爲我們在請求週期中。它也發生在任何用戶代碼被執行之前,所以afaik在這裏執行以防止類似的行爲是相當安全的。

如果處理程序中的身份驗證失敗,我重定向到註銷頁面並讓.Net處理所有其他事情。

0

我想你要找的是HttpModule中的AuthenticateRequest事件。在這個事件處理程序中,您可以檢查cookie並驗證憑據,然後設置HttpContext.Current.User來授權用戶。

+0

不是。我不想自己做任何cookie,因爲.Net可以處理所有這些。 – 2010-06-30 09:37:38

2

您只需撥打Membership.GetUser()即可返回當前登錄用戶的MembershipUser實例。如果您的用戶上次使用「記住我」登錄,導致持久性驗證。客戶端上的Cookie,您的MembershipProvider會自動告訴您用戶是否已從[持久cookie]登錄。 從持久性驗證cookie驗證用戶不需要額外的努力。

您可以工作出你的額外鉤上由該方法返回Membership.GetUser()例如MembershipUser和檢查,如果他授權執行任務。如果用戶未被發現登錄,該方法將簡單地返回null