asp.net-mvc - 您如何测试 ASP MVC 应用程序的基于用户的安全性?

标签 asp.net-mvc authentication testing

我已经为我的域对象编写测试一段时间了,但我仍然不太确定如何在我的 Web 项目中进行安全性测试。某些环境中的某些用户可以访问我的模型等的某些属性,但是您将如何进行测试?现在,我将其基于当前经过身份验证的用户,但我将如何注入(inject)虚假的身份验证提供程序?

这可能是一个愚蠢的问题,但如果有人能帮助我摆脱测试黑暗时代,我将不胜感激。

最佳答案

该链接是一种方式,但使用 Mock 会更好:

    Mock<ControllerContext> MockContext(string userName)
    {
        var mockContext = new Mock<ControllerContext>();
        // mock an authenticated user
        mockContext.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(userName);
        mockContext.SetupGet(p => p.HttpContext.User.Identity.IsAuthenticated).Returns(true);
        return mockContext;
    }

    [TestMethod]
    public void DinnersController_Delete_Should_Fail_With_InvalidOwner_Given_Wrong_User()
    {
        //set by default
        var mockContext = MockContext("scottha");

        // mock an authenticated user
        _dinnerController.ControllerContext = mockContext.Object;

        ViewResult result = _dinnerController.Delete(1, "") as ViewResult;
        Assert.AreEqual("InvalidOwner", result.ViewName);
    }

关于asp.net-mvc - 您如何测试 ASP MVC 应用程序的基于用户的安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/496393/

相关文章:

c# - ASP.NET 中缓存的 Request.IsAuthenticated 问题

c# - Entity Framework "An object with the same key already exists in the ObjectStateManager."- 我无法理解如何从这里开始做什么

iphone - iOS 中的应用程序 session ?

jQuery 选择器性能 : a curious case

asp.net-mvc - 没有和 100 之间的范围注释?

asp.net - Dotnet core 2.0身份验证多模式身份cookie和jwt

authentication - 如何将社交登录集成到我现有的用户架构/登录系统?

azure - 授权用户访问安全 Azure 测试站点

c# - 如何将依赖项从测试项目传递到 DryIoc 中的具体实现

ASP.NET MVC - 对象引用未设置为对象的实例