2009-10-27 150 views
1

我开始设计使用ASP.NET MVC预览版2开发的Web应用程序的基础结构作为学习体验。 我有我自己的域模型和数据库架构,我希望用于身份验证。Asp.net成员身份验证

我想执行基于角色的身份验证的变体。但是,我似乎无法围绕如何做到这一点。

我有一个用户可以访问“博客”。我如何在用户处于预期角色时执行授权,但用户属于上述“博客”的情况下执行授权

是否需要自定义角色提供程序,或者是否应该在授权属性中执行逻辑控制器动作;查询经过身份验证的用户的BlogId并在那里执行授权逻辑。我不知道任何内置的方式来做到这一点,但如果有请纠正我。

如果可能的话,提供此功能的自定义角色提供者或授权属性的示例将非常棒。

谢谢

回答

1

这听起来像你是想是有两个作用和所有权检查的能力。例如,用户可能具有“作者”角色,但也需要与特定博客建立所有权关系才能真正能够创建或更新博客条目。使用标准角色提供者以及知道如何检查所有权的自定义授权属性 - 实质上是动作实体和DB中当前用户条目之间的特定外键关系 - 似乎是一种合理的方法这个。

你可以在my answer这个similar question找到一些示例代码。

+0

感谢您的快速回复。将使用授权属性与输出缓存冲突;我记得在某个地方读过这篇文章。 – 2009-10-27 02:00:17

+0

请查看http://www.codeplex.com/aspnet上AuthorizeAttribute的源代码,看看它们如何处理缓存问题。在我的代码示例中,您可以看到我调用SetCachePolicy(),它实际上实现了代码,以类似于AuthorizeAttribute本身的方式解决此问题。 – tvanfosson 2009-10-27 02:03:43

+0

这似乎正是我所需要的。谢谢。 – 2009-10-27 02:12:05