- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 .NET Core 2.1 中使用了基于资源的授权模式,如所述 here .我遇到的唯一问题是我不知道如何干净地测试我的 AuthorizationHandler
。
这里有人做过类似的事情吗?
AuthorizationHandler
示例(来自上面的链接):
public class DocumentAuthorizationHandler :
AuthorizationHandler<SameAuthorRequirement, Document>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
SameAuthorRequirement requirement,
Document resource)
{
if (context.User.Identity?.Name == resource.Author)
{
context.Succeed(requirement);
}
return Task.CompletedTask;
}
}
public class SameAuthorRequirement : IAuthorizationRequirement { }
最佳答案
所有必需的依赖项都可用于独立的单元测试。
所需的测试方法 HandleRequirementAsync
可通过 Task HandleAsync(AuthorizationHandlerContext context)
访问
/// <summary>
/// Makes a decision if authorization is allowed.
/// </summary>
/// <param name="context">The authorization context.</param>
public virtual async Task HandleAsync(AuthorizationHandlerContext context)
{
if (context.Resource is TResource)
{
foreach (var req in context.Requirements.OfType<TRequirement>())
{
await HandleRequirementAsync(context, req, (TResource)context.Resource);
}
}
}
并且该成员仅依赖于 AuthorizationHandlerContext
,它具有如下构造函数
public AuthorizationHandlerContext(
IEnumerable<IAuthorizationRequirement> requirements,
ClaimsPrincipal user,
object resource) {
//... omitted for brevity
}
验证 DocumentAuthorizationHandler
预期行为的简单独立单元测试。
public async Task DocumentAuthorizationHandler_Should_Succeed() {
//Arrange
var requirements = new [] { new SameAuthorRequirement()};
var author = "author";
var user = new ClaimsPrincipal(
new ClaimsIdentity(
new Claim[] {
new Claim(ClaimsIdentity.DefaultNameClaimType, author),
},
"Basic")
);
var resource = new Document {
Author = author
};
var context = new AuthorizationHandlerContext(requirements, user, resource);
var subject = new DocumentAuthorizationHandler();
//Act
await subject.HandleAsync(context);
//Assert
context.HasSucceeded.Should().BeTrue(); //FluentAssertions
}
关于c# - 单元测试 AuthorizationHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51272610/
我在 .NET Core 2.1 中使用了基于资源的授权模式,如所述 here .我遇到的唯一问题是我不知道如何干净地测试我的 AuthorizationHandler。 这里有人做过类似的事情吗?
使用 .net 核心应用程序实现自定义策略。 假设我们有一个非常简单的自定义策略: internal class RequireNamePolicy : AuthorizationHandler, I
我们开发了一个基于身份验证的 Multi-Tenancy 应用程序。每个用户都会获得一个存储在数据库中的 token session ,以判断用户是否仍处于连接状态(有过期时间)。我将 token (
在 WCF 中,您可以使用 serviceAuthorization 通过 web.config 添加授权策略。服务行为中的节点。有没有办法包含 AuthorizationHandler在 .NET
我在 ASP.NET Core MVC (dnx46) RC1 中有一个带有 AuthorizationHandler 的应用程序: public class AppSumAuthAuthorizat
我正在尝试创建一个新的授权要求,但它必须使用我在 ConfigureServices 中声明的服务之一,而且我不知道如何使用与声明服务相同的方法将该服务传递给新要求。 public class New
我有一个 AuthorizationHandler,它依赖于为 .NET Core 3.1 的授权中间件提供异步方法的服务。我已经在 HandleRequirementAsync 中调用了其中一些异步
我正在尝试添加一些基于授权的自定义角色,但我无法将 Startup 配置为调用我的 AuthorizationHandler。 在GitHub上找到了一些相关资料:here .这是不是错误? 我正在使
我正在尝试添加自定义授权策略,该策略可以检查 json 配置文件中提供的组分隔列表。我正在使用 ASP.Net 5 - MVC 6 以及 Windows 身份验证。 一切正常,除了我调用 Fail 时
使用 .NET Core 1.1,我创建了一个 AuthorizationHandler: public class HasStoreAccountAuthorizationHandler : Aut
我正在使用授权处理程序将自定义授权放入我在 .net 核心中的 Controller 中。如何从 Controller 获取参数并将其用于授权处理程序? 在旧的 .NET 中,我可以像这样从 Http
我实现了我的自定义 AuthorizationHandler。 对此,我检查用户可以解决并处于事件状态。 如果用户不活跃,那么我想返回 403 状态。 protected override async
我正在使用向第三方服务发出 API 请求的身份验证中间件。然后,该中间件设置声明,稍后由 AuthorizationHandler 结合 IAuthorizationRequirement 和自定义策
我已经实现了自定义授权处理程序来确定用户是否有权编辑或删除资源。 但是处理程序从未被调用,当我尝试编辑资源时,我总是得到 401 状态代码。 这是我的自定义处理程序: public class Mee
我有以下 AuthorizationRequirement 和 AuthorizationHandler 已向 DI 注册并且工作正常。但是,当在 iframe(同源)中调用带有 [Authorize
我为用户登录使用了特定的授权策略,因此创建了自定义授权处理程序。如果政策失败,我想显示使用特定的警报消息。我读了documentation并发现我可以通过转换 AuthorizationHandler
给定以下带有 DI 的 UserManager 类 public class AccountAuthorizationHandler : AuthorizationHandler { priv
嗨,我正在使用身份服务器 4,我创建了一个使用 client_credentials 进行保护的客户端 我可以使用 clientid 和 secret 检索 token ,并且根据 jwt.io,访问
我正在尝试在 .net core 2.0 中实现 AuthorizationHandler 在那里我需要授权用户并根据条件想要重定向到我的应用程序验证中的不同操作方法工作正常但是我如何将用户重定向到拒
我是一名优秀的程序员,十分优秀!