Authorize 属性に基づいて MvcSiteMapProvider を使用してきましたが、 から派生した新しいクラスを導入するまでは問題ありませんでしたAuthorizeAttribute
。主な違いは、コンストラクターの署名にあります。
public MyAuthorizeAttribute(param RoleCode[] roles) {
Roles = string.join(",", roles.Select(r => r.ToString());
}
そして... MvcSiteMapProvider は予期しない結果を示しました: でマークされたアクションのみが非表示にMyAuthorizeAttribute
なりました。このコンストラクターを無効にすることで確認しました-コンストラクターにパラメーターを追加する前と同じようにすべてが行われました。また、params
具体的ではありませんが、任意のパラメーター (イベント int) がそのような動作につながります。
MvcSiteMapProvider ソースから理解したように、承認属性をエミュレートするコードを発行しますが、外部コードによって生成されたアセンブリを保存することは不可能のようです。回避策があることは知っています-ある種の列挙可能なプロパティを使用しますが、コンストラクターパラメーターで機能させる方法について何か提案はありますか? MvcSiteMapProvider がそのように動作する理由を知っていますか?