我想对用户的权限进行二次检查。
我的控制器使用[RequiredPermission("ExamplePermission")]
进行修饰,顺便说一下,它与控制器名称相对应。
我不想仅检查ExamplePermission
列表中是否包含Session.Permissions
字符串,而是想添加对RouteData参数的检查。
我可以在HasPermission
方法中访问此类对象吗?
public override bool HasPermission(string permission)
{
//checking routedata's parameters
return base.HasPermission(permission);
}
答案 0 :(得分:2)
您无法从AuthUserSession
内部访问当前路由,但您可以在全局请求过滤器中添加一个检查,以便您访问服务和请求类型,有关您的服务和用户会话的元数据,例如:
GlobalRequestFilters.Add((req, res, dto) =>
{
var requestType = dto.GetType();
var serviceType = HostContext.Metadata.GetServiceTypeByRequest(requestType);
var operation = HostContext.Metadata.GetOperation(requestType);
//operation.RequiredPermissions
//operation.RequiresAnyPermission
//...
var userSession = req.GetSession();
//userSession.HasPermission(...)
//...
});