2010-12-06 93 views
1

我正在使用ASP.NET MVC的表单身份验证。在应用程序级别的web.config中,我可以将需要身份验证的路径设置如下;动态路径的ASP.NET MVC授权

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

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

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

有没有什么办法可以为这种情况设置位置的路径属性?或者你有任何其他方式来解决这个问题?

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

回答

4

您可以通过在适当的操作或控制器上使用Authorize属性来控制授权。

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

一些更多的信息可以在ASP.NET MVC Authorization

找到
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 
    } 
}