2012-10-04 33 views
1

我的asp.net應用程序使用表單身份驗證工作正常。我還希望能夠創建「魔術」鏈接,以便他人可以關注該鏈接而無需登錄。如果用戶訪問如何在使用Forms Authentication和ASP.NET時通過鏈接自動驗證用戶身份?

http://myapp.com/viewstuff.aspx 

那麼他們就會被重定向到login.aspx第一,但如果他們訪問

http://myapp.com/viewstuff.aspx?ThingId=1234&Expires=20121004153200&Signature=aksdjfhalsdfydmvbsdkfjhysdk 

然後它會自動記錄它們的來賓帳戶,讓他們查看所請求的東西。我可以生成這樣的鏈接並編寫邏輯來檢查簽名是否有效,但我不確定在ASP.NET生命週期的哪個位置放置我的邏輯。有什麼建議麼?

目前我已將邏輯放入Application_AuthorizeRequest中,但它看起來並不理想,因爲我需要在用戶驗證它們後重定向()用戶。我寧願能夠設置一些東西,說'好吧,我已經認證了這個人並設置了他們的身份,讓他們的請求繼續'。

如果有人有一個實現這個很好的例子。

+0

我會嘗試把代碼放在global.asax.cs的Session_start中。您可以訪問HttpContext.Current.Request,可以執行重定向(順便說一句,不可能將Cookie設置爲可能與重定向結合)和session.End – jbl

回答

-1

好吧,聽起來像你在正確的軌道上。如果viewstuff.aspx需要驗證,那麼您將被重定向到您的登錄頁面,因此您需要將邏輯放在那裏(在login.aspx.cs中)以提取您的查詢字符串,將值分開並在通過之前對用戶進行身份驗證回到returnurl。

相關問題