从ASP.NET MVC 2中排除授权操作

时间:2010-06-04 05:43:16

标签: asp.net asp.net-mvc authorization

我在ASP.NET MVC应用程序中使用表单身份验证。我想要授权过程中的注册页面。我知道我可以在我的主web.config文件中添加位置标记,或者在特定文件夹中创建一个新的web.config。但我只想在用户控制器中排除一个特定的操作。我该怎么做?

5 个答案:

答案 0 :(得分:4)

不要使用Web.config< location> MVC应用程序中的授权。这样做会导致网站出现安全漏洞。

而是使用[Authorize]属性来控制谁有权访问某些控制器或操作。 (如果要将控制器的类型应用于该控制器中的所有操作,可以使用控制器类型的[授权]属性。)

更多信息:

答案 1 :(得分:2)

Try this slick way to do it.

它增加了从动作中排除控制器级过滤器的功能。

[ExcludeFilter(typeof(AuthorizeAttribute)]  
public ActionMethod DontAuthorize.....

更容易!

答案 2 :(得分:1)

你也可以创建自己的AllowWithoutAuthorisation属性并用它装饰ActionResult。

修改 这有点未经测试,但你不能这样做;

[Authorize(Users="*")]

编辑2

或者您可以使用[授权]装饰每个ActionResult,并省略您不想授权的那个。

答案 3 :(得分:0)

好的,我知道了。

我所做的是,我为该操作创建了一个单独的控制器,并在我的web.config中添加了一个位置元素,以允许匿名访问该操作。

                                        

这将允许所有访问该控制器而无需身份验证。

答案 4 :(得分:0)

将 [AllowAnonymous] 属性添加到方法(由 Jeremy 推荐)也对我有用。