我有一个基本的 Silverlight 业务应用程序,它还托管 WCF 服务。该服务是安全的,需要管理员角色。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class Service1 : IService1
{
public Service1()
{
Thread.CurrentPrincipal = HttpContext.Current.User;
}
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
public void DoWork()
{
}
}
奇怪的是,在退出 Silverlight 应用程序后,我仍然能够使用 Fiddler 成功地重播对 DoWork() 的服务调用。
设置断点Thread.CurrentPrincipal = HttpContext.Current.User;
表明HttpContext.Current.User
仍然持有以前经过身份验证的用户身份。
这里发生了什么?