0

認証されていないユーザーに「/public/*」ページへのアクセスを許可するために配置されたSiteMinderルールがあります。しかし、私のmvcフォルダー構造には、「パブリック」と呼ばれる物理フォルダー(または領域)がありません。どの領域にもパブリックページを自由に追加できるはずなので、これは行いたくありません。これで、認証されていないユーザーは公開ページ(アクション)にアクセスできなくなります。したがって、公開ページのSiteMinderを通過するための回避策が必要です。

私が解決策を見つける必要があるという私の心の2つのことがあります。

  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 に答える