4

在过去的几天里,我一直在努力理解基于声明的授权,并且在将理论知识应用于现实世界的 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 的声明类型和声明的值。但这只是声明的技术基础——我想了解是否有一个好的模式来创建声明并定义用户拥有/需要的声明。

4

2 回答 2

1

查看有关索赔授权的这篇(旧)帖子以获取概述。

然后你可以在这里找到更多细节,thinktecture 上还有很多其他不错的帖子。

WIF API 描述应该可以帮助您填补空白。

于 2013-12-12T07:31:45.463 回答
0

我有一个 UserClaims 表,其中存储了一个用户 ID、作为 URL 的声明类型和声明的值。

听起来像是存储索赔的完美方式。你的方法是正确的,可能是我会做的。我的建议是不要过度考虑这个问题,你已经有了一个很好的解决方案。:)

于 2013-12-06T19:46:04.853 回答