我有一个产品控制器,需要“product_editor”角色来访问大多数方法。有一些操作不需要授权,因此 [AllowAnonymous] 效果很好。但是,我有一个操作我想要求他们登录,但他们可能不是产品编辑器。
有没有一种简单的方法来为一个动作声明这个?
你可以看到我的一些尝试被注释掉了
[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 });
....
}