Проблемы безопасности MVC в моем приложении - лучшая стратегия разделения логики - PullRequest
1 голос
/ 19 октября 2011

Я чувствую себя самым большим идиотом - я думал, что только ActionResults было отправлено обратно клиенту. По этой причине в моем контроллере было множество "вспомогательных" методов.

Я только что попытался получить к ним доступ через URL, и клянусь, я чуть не сошел с ума, когда увидел, что к ним можно добраться! ... К счастью, никто еще не обнаружил это.

Один из таких методов, который я вызываю снова и снова:

public User GetCurrentUser()
{    
    User user = db.Users.SingleOrDefault(x => x.UserName == User.Identity.Name);
    return user;
}

Я только что создал папку с именем "Logic" внутри своей папки Models, и я пытаюсь отделить код - мне просто интересно, какова лучшая стратегия для вызова кода, пространств имен и многого другого?

В приведенном выше примере я использую User.Identity.Name, который наследуется только от Controller. Если я добавлю это, я вернусь к первой стадии!

Благодаря Дарину Димитрову я теперь знаю об атрибуте [NonAction] - который, добавляя к этим методам, делает точно , что мне нужно / исправляет проблему безопасности, однако многие из этих методов используются в разные контроллеры, и я знаю, что было бы лучше, если бы я мог отделить логику от контроллеров. Я просто не уверен, как лучше это сделать.

Может ли кто-нибудь направить меня в правильном направлении, прежде чем я начну рвать все свои волосы!?

1 Ответ

3 голосов
/ 19 октября 2011

Вы можете взглянуть на атрибут [Authorize].


ОБНОВЛЕНИЕ:

Или вы можете использовать атрибут [NonAction] или сделать метод закрытым.Но лучшей практикой в ​​этом случае было бы просто убрать эту логику из вашего контроллера.Контроллер должен содержать только действия контроллера.Другая логика должна быть размещена в соответствующих слоях.

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