我在ASP.NET MVC中有一个应用程序,它有多个可能的路由,可能会变得更大,因为我们可以动态添加插件。我们正在谈论数百个不同的页面和控制器。我们修改/添加了我们需要的(主要是重新设计)。现在我们必须确保用户只能访问我们修改过的页面。知道我们购买的应用程序的人可以去我们不希望他看到的路线。
所以最后,我的问题是:
有没有办法拒绝除了我想要的路线之外的所有路线。
由于申请量很大。我不能/不想去单个控制器并添加重定向或数据注释。此外,我不想列出我拒绝的每个网址,因为如果我们稍后添加插件,那也会很疯狂并且无法工作。我有300个网址拒绝,20个允许.. 我在webconfig中想到这样的事情吗?
deny *
permit mycontroller/action1
permit mycontroller/action2
我还应该补充一点,这个应用程序不使用任何类型的身份验证/授权。我希望任何用户都能够使用该应用程序。
我们在Azure wep app中托管它,这是一个解决方案吗?
答案 0 :(得分:1)
如果有人遇到同样的问题,我就是这样的。
这一切都在应用程序的web.config中完成:
你首先要用这个
否定一切 <authorization>
<deny users="?" />
</authorization>
<authentication mode="None" />
然后,您可以将您想要的网址列入白名单:
<location path="mycontroller/action1">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
<location path="mycontroller/action2">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
因此,每个URL dans都没有位置标记被认为无效,并会引发401异常。然后你可以从那里做你想做的事。
希望这有助于某人:)
答案 1 :(得分:-1)
使用控制器级别的[Authorize]
属性,然后使用[AllowAnonymous]
进行操作
[Authorize]
Public class mycontroller : Controller
{
Public ActionResult action1 ()
{
Return View();
}
[AllowAnonymous]
Public ActionResult action2 ()
{
Return View ();
}
}