.net 构建定制的好方法是什么;索赔授权经理“;Windows身份基础类?
我正在我办公室的第一个项目中工作,我们将使用基于声明的授权的“Windows Identity Foundation”。为此,Microsoft.net提供了ClaimsAuthorizationManager抽象类。为了使用这个类,您重写了两个方法:构造函数和.net 构建定制的好方法是什么;索赔授权经理“;Windows身份基础类?,.net,asp.net,wif,windows-identity,claims-based-identity,.net,Asp.net,Wif,Windows Identity,Claims Based Identity,我正在我办公室的第一个项目中工作,我们将使用基于声明的授权的“Windows Identity Foundation”。为此,Microsoft.net提供了ClaimsAuthorizationManager抽象类。为了使用这个类,您重写了两个方法:构造函数和CheckAccess(上下文作为ClaimsAuthorizationContext) 建造师设置一切;然后,当用户访问某个内容(例如网页)时,CheckAccess将被调用,其中包含一个参数,该参数指示用户、要访问的资源以及要对该资源
CheckAccess(上下文作为ClaimsAuthorizationContext)
建造师设置一切;然后,当用户访问某个内容(例如网页)时,CheckAccess
将被调用,其中包含一个参数,该参数指示用户、要访问的资源以及要对该资源执行的操作。例如,可以调用CheckAccess
,查看是否应授予用户Bob
访问资源的权限http://www.mysite.com/SecretPage.aspx
执行操作GET
CheckAccess
只返回true
或false
。Windows身份基础使我们能够灵活地执行<代码>检查访问< /代码>几乎任何可想象的方式!
在Microsoft提供的代码示例中,CheckAccess
配置为仅当用户的生日声明表明其年龄为21岁或以上时才允许访问。此策略在web.config中以纯文本形式给出,并在ClaimsAuthorizationManager
构造函数中读取
在我的办公室里,我们使用SQL跟踪几乎所有的数据,所以在我的例子中。我认为,对ClaimsAuthorizationManager
进行编程以从SQL中读取数据以确定用户是否可以访问资源是有意义的。然而,有无数不同的可能政策。我想创建一个ClaimsAuthorizationManager
,它将在当前项目中非常有用,并且我可以在未来继续构建和改进,而不必破坏和替换我今天创建的项目
在我进行这个项目时,最重要的事情是什么
更新:我一直在研究一个将所需索赔政策表示为字符串的系统。我使用二叉树逻辑将策略组合在一起。我维护与“资源”和“行动”相关的索赔数据库
这里还有其他人建立了ClaimsAuthorizationManager类吗?我认为这是令人鼓舞的,您期待着尝试不编写死代码,但我认为您已经超越了自己 您需要生成一个或多个被视为一次性的尖峰,以确定对您的特定场景有何意义
也就是说,如果所有规则都在数据库中,请创建一个存储过程基础CAM,从配置文件中读取存储过程名称。CheckAccess参数不会更改,因此存储过程签名可以是不可变的,允许您根据需要将其切换出去。我终于收到了一个建议。我自己也提出了一种将访问页面或资源的策略表示为字符串的方法,例如minAge(30)+roleRequired(“主管”),这意味着用户必须至少30岁或担任“主管”角色。我编写了一些二叉树逻辑来将策略分组在一起。我发现更困难的是,如果用户想要执行操作a或资源R,那么我们如何确定用户必须声明的策略?我已经编写了一些代码。我可以编写和解析一个字符串,表示用户声明必须满足的条件,但我很难弄清楚如何将策略与资源和操作关联起来。。。我认为在我的数据库中,它需要多个表来指示“资源”和“操作”到“策略”的映射。我确实有一个ClaimsAuthorizationManager的工作原型,它要求用户扮演访问指定网页的角色。