ほとんどのメソッドにアクセスするために必要な「product_editor」の役割を持つ製品コントローラーがあります。承認を必要としないアクションがいくつかあるため、[AllowAnonymous] はうまく機能します。ただし、ログインしている必要がありますが、製品エディターではない可能性があります。
1 つのアクションに対してこれを宣言する簡単な方法はありますか?
私の試みのいくつかがコメントアウトされているのを見ることができます
[Authorize(Roles = "product_editor")]
public class ProductController : Controller
{
#region Public Actions
[AllowAnonymous]
public ActionResult Search(string keyword...
[AllowAnonymous]
public ActionResult Details(string id...
#endregion
//[Authorize]
//[Authorize(Roles="")]
public ActionResult AuthorizedDownload(long id, string step)
{
SecureDownloadLink link = SecureDownloadLink.Load(id);
if(link.belongsTo(HttpContext.Current.User.Identity.Name))
{
//Allow download
}
else
{
//Return 404 Error
}
}
}
- 編集 -
有効なソリューションが見つかりましたが、残りの認証は属性で行われ、[AllowAnonymous] は少し誤解を招くため、属性ベースのソリューションが大好きです。
[AllowAnonymous]
public ActionResult AuthorizedDownload(long id, string step)
{
if (!User.Identity.IsAuthenticated)
return RedirectToAction("Login", "Account", new { ReturnUrl = Request.Url.LocalPath });
....
}