我想製作一個自定義的AuthorizeAttribute類,如下所述:Override Authorize Attribute in ASP.NET MVC。是否可以將方法參數傳遞給該方法的屬性?
的訣竅是,被授權的用戶與否不僅僅取決於他正在執行什麼方法,但參數,以及:
[MyCustomAuthorize(id)]
[HttpGet]
public ActionResult File(Guid id)
{
}
基本上,用戶將被授權看到一些文件,但不是其他人,所以我想將ID傳遞給我的自定義授權屬性。但我似乎無法做到這一點,因爲名稱'id'不在範圍內。
我知道我可以做的邏輯,以確保用戶有權訪問該文件的方法開始,但我有幾種方法,都將需要這樣做,並且它會更清潔,如果我可以做它作爲[Authorize]屬性的一部分。
嗯,我可能沒有資格在「真的知道我在做什麼」類別。你會建議我只是檢查他們是否有每個方法內的權限呢? – GendoIkari
不一定。如果一個動作結果被緩存,當用戶執行一個GET時,它將不會執行*。因此,操作中的權限檢查將不會運行。通常,像角色提供商或AzMan這樣的現成解決方案最適合那些不想重新發明車輪的人。 –