2010-11-03 120 views
1

我有一個ASP.NET Web服務可以被某些軟件應用程序訪問。在我的「登錄」方法中,創建一個FormsAuthenticationTicket,對其進行加密,然後返回到Web服務用戶。預計這張票據將被髮送到每種Web服務方法:GetLicense,CreateProduct等。 當收到票證時,它會被解密並在過期時被檢查。ASP.NET WebServices授權

問題是「註銷」方法:沒有任何能力強制票到期。如果創建時間長度爲60分鐘,則可以將其標記爲過期。儘管如此,用戶稱爲「註銷」方法,他仍然可以在以後使用相同的門票。

請指教,對Web服務用戶進行授權的最佳做法是什麼?

非常感謝!

P.S.任何想法都歡迎。可能我需要使用另一種機制(不是FormsAuthenticationTicket對象)。

+0

你如何評價票是否過期? – dotariel 2010-11-03 14:18:11

+0

它具有'IsExpired'屬性,並且過期期限由對象構造函數所需的參數定義。 – Budda 2010-11-03 15:24:53

+0

請參閱http://stackoverflow.com/questions/2772648/formsauthentication-signout-on-server/2774379#2774379 – stuartd 2010-11-03 14:25:11

回答

0

我所看到的簡單的解決方法是把票進去HttpContext.Current.Application收集與

HttpContext.Current.Application.Add(ticket) 

當用戶試圖使用票證 - 檢查它是否在集合。如果是 - 檢查其是否過期...

當用戶調用「註銷」的方法 - 我只是從集合中刪除票...

似乎是一個快速的解決方法來強制的FormsAuthenticationTicket到期。

如果您發現缺少這種方法,請讓我知道。

謝謝。