ASP.NET MVC授权的动态路径

时间:2010-12-06 00:00:13

标签: asp.net asp.net-mvc web-config

我正在使用ASP.NET MVC进行表单身份验证。在应用程序级别的web.config中,我可以将需要身份验证的路径设置为:

<location path="subdir1">
<system.web>
    <authorization>
        <allow users ="?" />
    </authorization>
</system.web>
</location>

subdir1 是Views文件夹中的文件夹名称。这适用于网页路由 siteurl.com/subdir1

但是,如果我的subdir1位于另一个动态创建的路径下,则此设置不起作用。例如; siteurl.com/dynamic/subdir1 不会请求身份验证。 dynamic 是在运行时创建的,web.config在应用程序启动时不知道它,但它不应该关心它,我只是希望它在有权访问 subdir1时请求身份验证路线。

有没有办法为这种情况设置位置的路径属性?或者你有其他办法解决这个问题吗?

任何帮助将不胜感激。 cas sakal

2 个答案:

答案 0 :(得分:4)

您可以使用相应操作或控制器上的Authorize属性来控制授权。

[Authorize]
public ActionResult MyAction()
{
   //stuff
}

可以在ASP.NET MVC Authorization

找到更多信息

答案 1 :(得分:1)

您应该在控制器/操作上使用AuthorizeAttribute,而不是在web.config文件中设置访问映射到控制器的路由的访问权限。如果并非所有操作都需要登录用户,则只需将属性应用于需要授权的操作(方法)。

[Authorize]
public class ProtectedController : Controller
{
    // all actions in this controller require the user to be logged in
}

public class MixedController : Controller
{
    [Authorize]
    public ActionResult ProtectedAction()
    {
        // this action requires the user to be logged in
    }

    public ActionResult PublicAction()
    {
       // this action is available to anonymous users
    }
}