- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何测试此代码(ASP.NET MVC 4、.NET 4.5 网络应用程序中的登录方法):
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && _userCredentialsService.ValidateUser(model.UserName, model.Password))
{
SessionAuthentication.SetAuthCookie(model.UserName, _userCredentialsService.GetUserGroups(model.UserName), model.RememberMe);
return RedirectToLocal(returnUrl);
}
}
使用此 SetAuthCookie 方法:
public static void SetAuthCookie(IEnumerable<Claim> claims, bool isPersistent)
{
if (!HttpContext.Current.Request.IsSecureConnection && FormsAuthentication.RequireSSL)
{
throw new HttpException(500, "Connection is not secured with SSL");
}
var sessionToken = CreateSessionSecurityToken(CreatePrincipal(claims.ToList()), isPersistent);
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionToken);
}
我在访问 SessionAuthenticationModule
时遇到空引用异常(该异常是由尝试获取 HttpContext 时提到的属性在内部抛出的)。这是堆栈跟踪:
at System.IdentityModel.Services.FederatedAuthentication.GetHttpContextModule[T]()
at System.IdentityModel.Services.FederatedAuthentication.GetHttpModule[T]()
at System.IdentityModel.Services.FederatedAuthentication.get_SessionAuthenticationModule()
我在位于测试程序集的 app.config 中制作了我的 web.config 的精确副本,代码在应用程序的正常运行时工作。
我已经使用了 HttpSimulator 和 MvcContrib 测试助手,以便 HttpContext 得到设置,但仍然抛出异常。有没有人有关于如何测试它的解决方案或变通方法?
最佳答案
您始终可以使用 Typemock Isolator/Telerik JustMock - 它们为静态方法和 futures(在您的代码中创建的类)启用模拟。在隔离器的情况下,一个简单的 Isolate.WhenCalled(() => FederatedAuthentication.SessionAuthenticationModule)
.WillReturn(<a fake value>);
应该可以解决问题
关于c# - 如何对使用 FederatedAuthentication.SessionAuthenticationModule 的代码进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18744774/
如何测试此代码(ASP.NET MVC 4、.NET 4.5 网络应用程序中的登录方法): public ActionResult Login(LoginModel model, string ret
根据文档,这两个模块都将用于创建 IClaimsPrincipal 的实例。我不明白为什么 WIF 费心使用 2 个 HttpModules 而不是 1 个?抱歉,我是 WIF 新人 最佳答案 最大的
我的项目有以下内容: ClaimsIdentity identity = new ClaimsIdentity(claims, "Forms"); ClaimsPrincipal principal
我不确定为什么,但当我尝试运行我的 ClaimsTransformer() 模块时,我的 FederatedAuthentication.SessionAuthenticationModule 解析为
我正在使用 System.IdentityModel 使用带有声明主体的表单例份验证对 ASP.NET MVC4 Web 应用程序中的用户进行身份验证。 (代码基于本文:http://brockall
我有一个现有的 MVC4 应用程序 (.NET 4.5),使用 FormsAuthentication我希望改用 SessionAuthenticationModule这样我就可以获得一个声明感知的身
在我的应用程序中,我让用户登录保管箱,当该过程完成时,它使用 SessionAuthenticationModule 将声明写入 fedauth cookie。 var sam = Feder
我是一名优秀的程序员,十分优秀!