0

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

可以使用此 url 请求 [http://MyDomain:1426/Company/Index] 但当 url 为 [http://MyDomain:1426/Reports/GrpView?OfferID=1] 时不使用 authorizecore 方法(因为我没有报告控制器)在 MVC 中有什么方法可以过滤视图 url 吗?

4

2 回答 2

0

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

如果这是一些遗留的 WebForms 页面或处理程序,您可以使用<location>您的部分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 控制器操作的访问。如果您没有将 ASP.NET MVC 用于您的报告服务,则不能使用这些机制。

于 2012-10-08T13:33:10.423 回答
0

我的报告在 .aspx 页面上,我将其放入报告视图文件夹(不好的方法)。正如 darin dimitrov 所说,为什么这个 ASPX 页面在您的 Views 文件夹中?此文件夹中的文件只能通过控制器操作提供。那里不能有经典的 WebForms 页面。因此,您必须有一个名为 ReportsController 的控制器,其中包含一个名为 GrpView 的操作,您可以使用 [Authorize(Roles="admins")] 属性进行装饰。另一方面,如果这是一个经典的 WebForms 页面,您需要将其从 Views 文件夹中移开,然后指定其路径。通过使用这种方法,我无法传递我的调用表单 AuthorizeCore 函数。

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

于 2012-10-09T13:05:37.770 回答