2012-07-12 23 views
0

有没有一种方法来设置一个控制器内的一组操作,要求用户在一定的作用?设置的一组操作要求相同的授权

因此,例如,如果我有5个操作,我想要求用户处于“招聘”角色,我可以对代码进行分组,然后让所有这些操作都需要基于单个注释的相同角色?

反之,如果这是不可能的,有没有办法将类标记需要一定的作用,它们是有注释设置的一些行动,无视这一要求?

最后,如果这不是你可以使用部分类来做到这一点的选项?

任何其他方法,我没有想到会工作。

+1

您想知道许多方法是否可以拥有相同的授权,但不一定都是这样吗? – Skitterm 2012-07-12 22:38:54

+0

不完全是,我想要将一个注释应用于一组操作。这主要是我的懒惰问题,但我宁愿不必注释5的动作完全相同如果有一种方法来注释一组动作 – Jared 2012-07-12 22:43:13

+0

此外,它会超过5个动作,这只是一个任意的号码我扔了出去。 – Jared 2012-07-12 22:44:34

回答

0

经过多番寻找它不会出现有一个[Authorize]属性应用到的一组操作(即我已经能找到)的方法。看来,你必须将其应用于课堂或个人行动。虽然Skitterm的答案是一个很好的选择,但它并没有解决我希望解决的问题。

1

贾里德,

这是我会做什么,但它并没有解决该问题得到不得不这样做的每一个:

[Authorize] 
public class HomeController : Controller 

[Authorize(Roles = "Recruiter")] 
public ActionResult MethodOne() 
{ 

} 

它看起来像你的问题就出在这里:

Overriding controller AuthorizeAttribute for just one action

的这个问题的答案似乎是打在你的以及 - 使用Order属性来限制最少的权限设置为C控制器和对方法的限制性最强。

控制器设置为这一个(大多数方法之一),并为那些想要豁免(较少),让你的授权声明更加严格。

+0

如果订单授权放在控制器的前面,就我所知,它不会被覆盖。但是,如果放在索引的前面,它可以。 – Skitterm 2012-07-12 23:14:17

+0

是的,我知道这样做,但我其实不需要任何一些操作的认证。 – Jared 2012-07-12 23:16:19

+0

设置他们更高的订单,但没有任何其他的要求:即[授权(订单= N + 1)],而不是[授权(订单= N + 1,角色=“什么”) – Skitterm 2012-07-12 23:20:35