2010-03-21 65 views
0

是否有可能在运行时配置ASP.NET MVC中的安全性?例如,如果我的控制器已被标记为在运行时配置ASP.NET MVC中的安全性

[Authorize(Roles="Admin")] 

有没有方法可以在运行时添加/删除角色?或者,你是否需要在代码中进行更改并重新编译?

回答

0

如果你想建立一些自定义的东西,你可以创建你自己的定制授权方案。

看看AuthorizeAttribute - 这里是an article,它有两个机制的简单比较。

1

是的,你将不得不提供你自己的IPrincipal实现,这将允许。所有的Authorize方法都是调用User.IsInRole(“Admin”)方法。

1

我想你需要这种功能,因为你在运行时添加新的角色,并且你正尝试将它们连接到你的应用程序提供的功能上。如果我的思想正确无误,则还必须具有存储在某处(在数据库或注册表或配置文件中)的功能列表。鉴于此,我相信你将用户置于角色中,并将角色附加到功能上,并将这些关系存储在数据存储中。

所以,有了这一切,你可能要拿出对自己的行为自定义属性(装饰),将说出头像

[AuthorizeUsers] 

,而不是

[Authorize(Roles="Admin")] 

所以发射任何参考到任何类型的角色,而是进入数据存储并枚举所有的关系,并检查所有的角色/用户及其,我应该说,权限。然后,您要么拒绝他们的请求(例如,将他们返回到他们有权访问的另一个View),要么给他们一个选择权限的选项(当您访问您没有权限的部分页面时,SharePoint会执行此操作)。

有关如何编写自定义授权的确切代码示例,请转到ASP.NET MVC源代码 - System.Web.Mvc命名空间。

HTH