我有一个基本的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
仍然保留以前经过身份验证的用户身份。
这里发生了什么?