我想让我的ServiceStack服务可测试.
现在我有:
[RequireFormsAuthentication]
public object Delete(DeleteRequest request)
{
var originalRequest = (HttpRequest)Request.OriginalRequest;
var identity = originalRequest.RequestContext.HttpContext.User.Identity;
return othercode(identity);
}
Run Code Online (Sandbox Code Playgroud)
RequireFormsAuthentication的位置
public class RequireFormsAuthenticationAttribute : RequestFilterAttribute
{
public override void Execute(IHttpRequest req, IHttpResponse res, object requestDto)
{
var originalRequest = (HttpRequest)req.OriginalRequest;
var identity = originalRequest.RequestContext.HttpContext.User.Identity;
if (!identity.IsAuthenticated)
{
res.StatusCode = (int)HttpStatusCode.Forbidden;
res.EndServiceStackRequest(skipHeaders: true);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经嘲笑了'othercode()'使用的所有依赖项,剩下的就是基类Service中的东西.是否有一种模式/策略/方法/我缺少的东西使这个微不足道?
有很多关于如何使用SignalR进行Forms身份验证或Windows身份验证的信息.我有兴趣使用自己的身份验证DB.我使用的是.NET客户端,因为连接代理是一种服务,而不是支持人类的Web浏览器.我理想情况下喜欢我的客户端代码:
hubConnection.Credentials = new NetworkCredential(userName, password);
Run Code Online (Sandbox Code Playgroud)
我的服务器代码在集线器上使用[授权]并且可以使用Context.User.所有的通讯都是通过https,所以我不关心纯文本.
我已经阅读了asp.net 基本认证指南,该指南展示了如何使用IHttpModule覆盖认证机制.但是,当我断开HttpModule中的代码时,似乎永远不会在来自.NET SignalR客户端的请求中设置'Authorization'标头.
我想要做的就是从客户端轻松传递用户名和密码,并编写服务器上的身份验证方式.那么难吗?没有魔法.没有Active Directory.只是由我认证.
我当前的工作方法是设置在SignalR级别解释的自定义标头(使用自定义AuthorizeAttribute),但显然"正确的方法"不是在授权级别进行身份验证而是让网络服务器执行在任何SignalR事件发生之前.
任何人都可以描述一个完整的,但简单,自定义身份验证的良好程序?
我有一个网络应用程序需要检查用户是否连接到互联网.在实现中,如果对已知端点的ajax ping成功,则check()函数将为true,如果ajax调用以任何方式失败,则为false.
在Jasmine中,我可以request.respondWith({status:400, etc})用来模拟失败,但我无法弄清楚如何模拟根本没有发出的更基本的错误.
实际上,当甚至无法进行调用时,浏览器似乎"返回"状态代码0和readyState 4.
我应该如何在Jasmine测试中解决这个问题?
c# ×1
iis ×1
jasmine ×1
jasmine-ajax ×1
javascript ×1
moq ×1
servicestack ×1
signalr ×1
unit-testing ×1