我不熟悉此AJAX方法,但不应使用UpdatePanel
,而是使用WebMethod
s和WebService
s。我的主要问题是身份验证。Webmethod身份验证未通过
当输入页面或创建回发请求时,一切正常。身份验证正确传递,我可以访问Thread.CurrentPrincipal.Identity
并从那里获取我的用户身份对象。
但是,当我尝试在我的页面上呼叫WebMethod
时,此更改。调用正确地传递给服务器,并且一切似乎都很好,直到我尝试从线程获取用户标识。然后,我只得到Anonymous
用户,而不是真正的用户。在webmethod上启用会话似乎没有多大帮助。
任何想法可能会导致此问题,以及如何解决它?有人提到认证cookie需要与请求一起传递,但我该怎么做呢?
任何帮助将不胜感激。
编辑:
一些澄清和代码:
我的应用程序是用标准asp.net
。在对遗留代码进行了一些更深入的研究之后,我发现所有认证都是在一些基类中完成的,从所有其他页面继承。每次加载页面时,用户主体都从HttpContext.Current.Session("...")
获得。我认为这不是一个好的解决方案,但我现在需要坚持下去。问题是,WebMethod
由于是static
,因此无法触发整个页面的生命周期。我现在通过调用从会话中获取用户数据的方法来修复它。
我想得到一些想法如何正确创建,以及基于会话的身份验证可能导致哪些问题。
PageMethods.SomeMethod(parameter, SuccessDelegate, FailureDelegate);
这就是我现在打电话给WebMethods
的方式。我认为它传递了所有必需的cookies,对吗?
我设法得到了一些关于这个问题的更多信息,所以我编辑了我的问题来包含这些细节。看来问题不在于Cookie,而在于旧代码。 – Pako 2012-03-01 14:17:27