我创建了控制器:
[Authorize]
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult Delete(int id)
{
try
{
db.DeleteObject(db.AEROLINEA.FirstOrDefault(x => x.AEROLINEAID == id));
db.SaveChanges();
}
catch { /* TODO:Display message*/ }
return View();
}
如果我在firebug中执行,那么任何记录的下一个javascript都可以删除航空公司,即使他没有删除权限
var action = "/Airline/Delete/" + recordId;
var request = new Sys.Net.WebRequest();
request.set_httpVerb("DELETE");
request.set_url(action);
request.add_completed(deleteCompleted);
request.invoke();
HOw可以避免这个问题???
答案 0 :(得分:2)
您可以过滤角色:
示例:
[Authorize(Roles="Admin")]
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult Delete(int id)
{
try
{
db.DeleteObject(db.AEROLINEA.FirstOrDefault(x => x.AEROLINEAID == id));
db.SaveChanges();
}
catch { /* TODO:Display message*/ }
return View();
}
答案 1 :(得分:0)
或者在View ..中使用带有多汁盐的AntiforgeryToken。
答案 2 :(得分:0)
[授权]不带参数允许您指示用户必须登录。您还可以指定用户/角色,有权访问您的操作