0

有一个 SiteMinder 规则允许未经身份验证的用户访问“/public/*”页面。但是在我的 mvc 文件夹结构中,没有称为“公共”的物理文件夹(或区域),我不想这样做,因为我应该能够在任何区域自由添加公共页面。现在,未经身份验证的用户将无法访问公共页面(操作)。所以我需要一种解决方法来通过 SiteMinder 访问公共页面。

在我的脑海里有两件事我需要找到解决方案。

  1. 通过为 SiteMinder 预先添加“/public”来重写路由(有条件地可能基于 Authorized 属性)。

  2. 一旦收到带有“/public”的url,应该将其路由到适当的区域/控制器/动作,忽略其中的“/public”部分。

我仍然想不出一种方法来编写上面的代码。如果您的专家知道如何实现上述目标或有不同的想法,请发表。

干杯,穆西拉

4

1 回答 1

0

最后,问题缩小到“如何通过在根之后和区域/控制器/操作之前添加“/public”来重写路由?”

在我的同事的帮助下,我做了一个 POC 来实现上述目标:使用反射获取适当的控制器名称、动作名称和分析命名空间获取区域名称。现在我们有了“/public”的新模式。

routeUrlPattern = string.Format("public/{0}/{1}/{2}/{{id}}", areaName, controllerName, actionName);


 RouteTable.Routes.Add(new Route(routeUrlPattern, new MvcRouteHandler())

上述路由应添加到表中的非公共路由之前,以便为 /public 工作。

于 2012-09-06T20:23:32.100 回答