2010-11-03 125 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到期。

如果您发现缺少这种方法,请让我知道。

谢谢。