如何使用流畅的NHibernate在MVC3中实现基于角色的授权?

问题描述:

我们的MVC3应用程序使用流利的NHibernate并需要实现用户登录,身份验证和授权。如何使用流畅的NHibernate在MVC3中实现基于角色的授权?

我见过在控制器类中使用[Authorize]方法的文章。然而,我不确定这是如何在我们的情况下工作,因为流利的NHibernate正在使用。

任何人都可以分享一些关于如何使这项工作的建议吗?

你可以write a custom role provider实现RoleProvider类。在您的RoleProvider类的自定义实现中,您可以使用任何您想要的数据库访问技术 - FluentNhibernate或其他。基本上你有兴趣实施IsUserInRole方法。

然后装饰与授权属性你的控制器/动作:

[Authorize(Roles = "Admin")] 
public ActionResult Foo() 
{ 
    return Content("Only administrators can see this message"); 
} 

而这里的另一个blog post覆盖写入更详细的自定义角色提供商。