【发布时间】:2011-02-27 15:27:00
【问题描述】:
我在我的 ASP.NET MVC 应用程序中使用表单身份验证。我想从授权过程中进入注册页面。我知道我可以在我的主 web.config 文件中添加一个位置标签,或者在特定文件夹中创建一个新的 web.config。但我只是排除用户控制器中的一项特定操作。我该怎么做?
【问题讨论】:
标签: asp.net asp.net-mvc authorization
我在我的 ASP.NET MVC 应用程序中使用表单身份验证。我想从授权过程中进入注册页面。我知道我可以在我的主 web.config 文件中添加一个位置标签,或者在特定文件夹中创建一个新的 web.config。但我只是排除用户控制器中的一项特定操作。我该怎么做?
【问题讨论】:
标签: asp.net asp.net-mvc authorization
不要在 MVC 应用程序中使用 Web.config
相反,使用 [Authorize] 属性来控制谁可以访问某些控制器或操作。 (如果您希望将 [Authorize] 属性应用于该控制器中的所有操作,则可以在该控制器的类型上使用该属性。)
更多信息:
【讨论】:
它增加了从操作中排除控制器级别过滤器的功能。
[ExcludeFilter(typeof(AuthorizeAttribute)]
public ActionMethod DontAuthorize.....
容易多了!
【讨论】:
您也可以创建自己的 AllowWithoutAuthorisation 属性并用它装饰 ActionResult。
编辑 这有点未经测试,但你不能这样做;
[Authorize(Users="*")]
编辑 2
或者你可以用 [Authorise] 装饰每个 ActionResult 并省略你不想授权的那个。
【讨论】:
[AllowAnonymous]
好的,我知道了。
我所做的是,我为该操作创建了一个单独的控制器,并在我的 web.config 中添加了一个 location 元素以允许匿名访问该操作。
这将允许所有访问该控制器而无需身份验证。
【讨论】:
在方法中添加 [AllowAnonymous] 属性(由 Jeremy 推荐)也对我有用。
【讨论】: