Asp.net mvc 如何在mvc中过滤查看url

Asp.net mvc 如何在mvc中过滤查看url,asp.net-mvc,visual-studio-2010,url,asp.net-mvc-4,Asp.net Mvc,Visual Studio 2010,Url,Asp.net Mvc 4,我在mvc中重写AuthorizeCore函数进行身份验证和授权,当我调用一个视图表单控制器时,它可以正常工作。但现在我有了一个视图,其中包含一些报告的链接,我想向具有访问权限的用户显示该报告。我可以隐藏报告的链接,但无法限制直接url 可以使用此url请求[http://MyDomain:1426/Company/Index]但是 当url为时,不会转到authorizecore方法:[http://MyDomain:1426/Reports/GrpView?OfferID=1](因为我没有报

我在mvc中重写AuthorizeCore函数进行身份验证和授权,当我调用一个视图表单控制器时,它可以正常工作。但现在我有了一个视图,其中包含一些报告的链接,我想向具有访问权限的用户显示该报告。我可以隐藏报告的链接,但无法限制直接url

可以使用此url请求[http://MyDomain:1426/Company/Index]但是 当url为时,不会转到authorizecore方法:[http://MyDomain:1426/Reports/GrpView?OfferID=1](因为我没有报表控制器)
MVC中是否有任何方法可以过滤视图URL

不太清楚提供报告功能的
报告/GrpView
处理程序是什么。它似乎不是ASP.NET MVC控制器操作,因为您会用
[Authorize]
属性修饰它并指定角色

如果这是一些旧的WebForms页面或处理程序,您可以使用
web.config
中的
部分来控制访问:

<location path="Reports/GrpView">
    <system.web>
        <authorization>
            <!-- deny access to all users -->
            <deny users="*"/> 

            <!-- allow access to users in the "admins" role -->
            <allow roles="admins"/> 
        </authorization>
    </system.web>
</location>


Authorize
属性(以及由此派生的任何自定义属性)仅用于确保对ASP.NET MVC控制器操作的访问安全。如果您的reporting services未使用ASP.NET MVC,则无法使用这些机制。

我的报告位于.aspx页面上,我将其放入reporting view文件夹(错误方法)。正如达林·迪米特罗夫所说
为什么此ASPX页面位于您的“视图”文件夹中?此文件夹中的文件只能通过控制器操作提供。那里不能有经典的WebForms页面。因此,您必须有一个名为ReportsController的控制器,该控制器具有一个名为GrpView的操作,您可以使用[Authorize(Roles=“admins”)]属性来修饰该操作。另一方面,如果这是一个经典的WebForms页面,则需要将其从“视图”文件夹中移出,然后指定其路径。通过使用这种方法,我无法将调用表单传递给核心函数

///
我在.aspx页面上处理角色权限管理。如果有人找到任何其他解决方案,请与我们分享。

你说的“限制直接URL”是什么意思?你的意思是阻止用户在浏览器中输入URL并以这种方式访问吗?我实际上想显示错误页面,你无法看到此报告。问题是我的观点,核心方法并没有被调用。我在全局文件中注册它。是的,我正在使用AuthorizeAttribute并重写其AuthorizeCore方法。AuthorizeAttribute将仅在控制器操作方法上工作。提供报告的是什么?报告服务?如果需要限制访问,则必须在报告的提供程序中对其进行访问。MVC无法筛选它不服务的URL。GrpView是我的.aspx文件。此文件的完整路径是views/reports/grpview.aspx。我写路由器来访问此文件。现在我采取一种方法来解决这个问题,我创建了一个控制器,通过这个控制器,我尝试访问文件Views/Reports/GrapView.aspx,但无法打开报告。他们有没有办法访问mvc中的.aspx页面?为什么这个aspx页面在您的视图文件夹中?此文件夹中的文件只能通过控制器操作提供。那里不能有经典的WebForms页面。因此,您必须有一个名为
reportscoontroller
的控制器,其操作名为
GrpView
,您可以使用
[Authorize(Roles=“admins”)]
属性对其进行修饰。另一方面,如果这是一个经典的WebForms页面,您需要将其从Views文件夹中移出,然后在web.config中的
元素中指定其路径。因为我有WebForms页面,所以我将其移动到其他文件夹“AllReports”中,现在每个人都可以通过更改url中的id来访问这些文件和查看报告。我尝试使用以下方法使其无法访问,但未成功:
。或者更好的是,您可以将web.config文件放入
AllReports
文件夹中,然后使用
。谢谢Darin Dimitrov,它可以工作。如果我拒绝所有我输入的用户,那么这对用户abdulwahe不起作用?我没有使用asp用户管理我自己管理。配置文件如何能够看到哪个用户登录?