您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在ASP.NET Core中模拟IPrincipal

在ASP.NET Core中模拟IPrincipal

可以通过的来访问控制器的。后者存储在中。UserHttpContextControllerContext

设置用户的最简单方法是为构造的用户分配不同的HttpContext。我们可以DefaultHttpContext为此目的使用,这样就不必模拟所有内容。然后,我们仅在控制器上下文中使用该HttpContext并将其传递给控制器??实例:

var user = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
{
    new Claim(ClaimTypes.Name, "example name"),
    new Claim(ClaimTypes.NameIdentifier, "1"),
    new Claim("custom-claim", "example claim value"),
}, "mock"));

var controller = new SomeController(dependencies…);
controller.ControllerContext = new ControllerContext()
{
    HttpContext = new DefaultHttpContext() { User = user }
};

创建自己的时ClaimsIdentity,请确保将显式传递authenticationType给构造函数。这确保了它@L_301_12@可以正常工作(以防您在代码中使用它来确定用户是否已通过身份验证)。

dotnet 2022/1/1 18:19:28 有283人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶