基于声明的授权 - 如何管理声明

时间:2013-11-06 10:24:21

标签: asp.net-mvc claims-based-identity

最近几天我一直在努力理解基于声明的授权,我将理论知识应用到现实世界的MVC网站上有一个严峻的问题。 像http://www.codeproject.com/Articles/639458/Claims-Based-Authentication-and-Authorization这样的教程正在描述安装过程和基础知识,但是如何管理索赔却很少。

假设一个简单的MVC网站,用于保存有趣的驯鹿的照片。 它使用的是Thinktecture.IdentityModel,但可能每个其他Identitymodel都可以。 假设身份验证已到位并正常工作。

 public class ReindeerController : Controller
    {
        //should be accesible to whole world
        public ActionResult AboutReindeers()
        {}
        //should be accessible to users which are supposed to add Reindeers, e.g. an "Admin" (which is a role, I know)
        public ActionResult AddReindeer()
        {}
        //Only for the Site-owner
        public ActionResult DeleteReindeer()
        {}
        //should be accesible to registred users
        public ActionResult Index()
        {}
    }

所以我有一个UserClaims表,它存储用户ID,索赔的类型为URL和索赔的值。但这只是声明的技术基础 - 我想了解是否有一个好的架构来创建声明并定义用户有/需要的声明。

2 个答案:

答案 0 :(得分:1)

请查看此(旧)帖子about claims authorization以获取概述。

然后你会发现更多细节here,thinktecture还有很多其他不错的帖子。

WIF API说明可以帮助您填补空白。

答案 1 :(得分:0)

  

我有一个UserClaims表,它存储用户ID,索赔类型为URL和索赔值。

听起来像存储声明的完美方式。你的方法是正确的,也许我会做的。我的建议是不要过分思考这个问题,你已经有了一个很好的解决方案。 :)