我正在使用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
答案 0 :(得分:4)
您可以使用相应操作或控制器上的Authorize
属性来控制授权。
[Authorize]
public ActionResult MyAction()
{
//stuff
}
找到更多信息
答案 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
}
}