我正在创建一个具有Web界面的.Net(C#)应用程序,该界面可以从用户的本地网络访问。当然,用户也可以选择从外部(互联网)访问网络界面。
Web界面是SPA(单页应用程序)。网站有一个Rest接口和一个WCF接口,因此其他软件可以轻松地与我的应用程序进行交互。两者都是自我托管的。
网站本身(HTML页面)是Nancy自我托管的。
WCF和Rest的操作合同如下所示:
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
public string GetStuff()
{
return "Stuff";
}
WCF / Rest-service启动如下:
// Create the ServiceHost.
apiHost = new ServiceHost(typeof(ServiceClass), Address);
apiHost.Description.Behaviors.Add(smb);
ServiceEndpoint restEndpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(ServiceClass)), new WebHttpBinding(), new EndpointAddress(RestAddress));
restEndpoint.EndpointBehaviors.Add(new WebHttpBehavior());
apiHost.AddServiceEndpoint(restEndpoint);
现在我想添加一个登录网站和Rest-service(稍后将添加登录到WCF服务)。但每当我尝试在互联网上解释的方法时,某些东西就不起作用了。例如,我尝试this,但后来我无法访问HttpContext.Current.User.Identity,因为当前的HttpContext为空。
任何人都可以解释我如何为我的实现添加身份验证,或者至少指出我正确的方向? ServiceContract中有很多方法,所以我不希望在每种方法中都做一些手动检查。但是如果没有其他方法,我可以使用PostSharp来为每个方法添加一些身份验证代码。
感谢您的帮助!