C# 具有外部身份验证的ASP.NET MVC中基于声明的授权

C# 具有外部身份验证的ASP.NET MVC中基于声明的授权,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我对这件事做了大量的研究,现在需要对这样一个场景的问题发表第二个意见: 我必须实现一个基于声明的授权,该授权将来自外部提供商(另一个团队通过WCF服务提供此身份验证)。他们为我提供了一个声明,其中只包含经过身份验证的用户分配的角色名称(单个用户可以分配给多个角色),基于此,我需要授权我的大多数控制器方法。例如,在不同角色允许的不同操作级别上,让我们获得名为主持人的角色,该主持人有权读取和写入,但不能删除某些资源的记录。我的想法是缓存自定义类的一些列表包含3个字段:字符串资源名,列表操作,字符串角

我对这件事做了大量的研究,现在需要对这样一个场景的问题发表第二个意见:

我必须实现一个基于声明的授权,该授权将来自外部提供商(另一个团队通过WCF服务提供此身份验证)。他们为我提供了一个
声明
,其中只包含经过身份验证的用户分配的角色名称(单个用户可以分配给多个角色),基于此,我需要授权我的大多数
控制器
方法
。例如,在不同角色允许的不同操作级别上,让我们获得名为
主持人的
角色
,该主持人有权
读取
写入
,但不能
删除某些资源的记录。我的想法是缓存
自定义类
的一些
列表
包含3个
字段
字符串资源名
列表操作
字符串角色
在应用程序启动时从xml文件生成。然后在继承自
ClaimsAuthorizationManager
CustomClaimsAuthorizationManager
CheckAccess
方法中

第一个问题:

以前有没有人经历过类似的场景?有没有比我上面描述的更好的解决方案


我不想覆盖
任何
会员资格提供商

听起来您只需要编写自己的授权筛选器属性,以执行必要的检查。我可能遗漏了一些想法,但将所有需要的信息存储在xml文件中是好主意还是更好的办法是将其放在json中?为什么不向现有的成员数据库添加一个表?我们有多租户应用程序,所以它将在x数据库中被倍增信息。不要过早地优化。您主要关心的似乎是缓存角色。但是,首先要让它工作,然后考虑添加缓存。缓存的信息是否来自XML、数据库或其他任何东西并不重要。