我创建了一个继承自AuthorizeAttribute的自定义Authorize属性。部分自定义是将用户的访问权限记录到数据库中。
export const PlayersIndex = new Index({
collection: Stocks,
fields: ['Player', 'Team'],
engine: new MinimongoEngine(),
});
我希望能够在控制器级别上使用它,以及对某些操作进行更精细的控制,例如以下示例:
public class Authorization : AuthorizeAttribute
{
...
dbRepo.LogAccessEntry(parameters);
...
}
但是,这将导致自定义授权记录两次。我在这里查看答案https://stackoverflow.com/a/16713334/5473973,这将导致我使用覆盖属性,但不希望创建另一个属性来跟踪。有没有办法区分它被调用的级别或区分是否有其他属性需要检查?只有完成授权链后,才能记录访问权限。或者有更好的解决方案吗?
答案 0 :(得分:0)
基于NightOwl888的响应(https://stackoverflow.com/a/49175535/5473973),我最终在自定义属性上使用了“AllowMultiple = false”属性。这允许操作属性覆盖控制器属性。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class Authorization : AuthorizeAttribute
{
...
dbRepo.LogAccessEntry(parameters);
...
}