впрыск javascript asp mvc - PullRequest
1 голос
/ 20 мая 2009

Я создал контроллер:

    [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();

Как можно избежать этой проблемы ???

Ответы [ 3 ]

2 голосов
/ 20 мая 2009

Вы можете отфильтровать роли:

Пример:

[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();
    }
0 голосов
/ 20 мая 2009

[Авторизовать] без параметров позволяет указать, что пользователь должен войти в систему. Вы также можете указать пользователей / роли, авторизованные для доступа к вашему действию

0 голосов
/ 20 мая 2009

Или используйте AntiforgeryToken с пикантной солью в View ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...