У меня 5-летний опыт работы с веб-формами ASP.NET, и я новичок в ASP.NET MVC. Сейчас я пытаюсь изучить MVC с помощью некоторых руководств, видеоуроков и книг.
Я использую Visual Studio 2012 и новый ASP.NET MVC 4 для создания небольшого веб-приложения для управления своим портфелем паевых инвестиционных фондов. Это должно позволить мне проникнуть в новый шаблон и узнать много нового ...
Мое приложение также должно позволять другим друзьям делать то же самое. Поэтому он должен управлять портфелями разных пользователей.
Я создал небольшую БД с Entity Framework Code First, поэтому у меня есть несколько базовых моделей: Фонд, Портфель, Доля, Депозит, Источник и Пользователь. У одного пользователя может быть много портфелей с множеством средств внутри них. У каждого пользователя есть свой список депозитов. Каждый фонд имеет несколько значений стоимости акций (одна в день).
Модель Source - это просто таблица, в которую я помещаю по одному URL-адресу для каждого источника веб-сайта с данными о доле конкретного фонда. Итак, у одного фонда много источников. Затем я использую класс парсера, чтобы получать данные с этих веб-сайтов один раз в день.
Это основная структура приложения. Теперь мне нужно знать, как лучше всего:
1) Управляйте учетной записью пользователя.
Должен ли я интегрировать структуру базы данных членства ASP.NET в свою базу данных и использовать ее вместо моей пользовательской таблицы для управления пользователями?
2) Управляйте пользовательским контентом: портфелями, фондами и т. д.
Какой самый простой и самый элегантный способ в шаблоне MVC - реализовать аутентификацию и все проверки авторизации, чтобы пользователь получал свои собственные данные? Нужно ли мне проверять это внутри каждого действия на каждом контроллере?
Другими словами, как мне реализовать свои контроллеры? Например.:
[Authorize]
public class PortfolioController : Controller
{
private FundMonitorContext db = new FundMonitorContext();
public ActionResult Index()
{
// Check user ID and give back to the view only his portfolios...
var portfolio = db.Portfolios.List();
return View(portfolio.ToList());
}
...
public ActionResult Details(int id = 0)
{
...
}
//Other actions...
}
Буду очень признателен за каждое предложение!