Многопользовательское приложение с MVC3, членство в ASP.NET - аутентификация пользователя / разделение данных

Я создаю простое многопользовательское (мультитенантное?) Приложение с ASP.NET MVC3 и EF4, одной базой данных, одной базой кода, доступ всех пользователей приложение, использующее тот же URL. После того, как пользователь вошел в систему, он должен иметь доступ только к своим данным, я использую поставщика членства asp.NET по умолчанию и добавил поле Guid UserId в каждую из таблиц данных. Очевидно, я не хочу, чтобы у пользователя A был какой-либо доступ к данным пользователя B, поэтому я добавил следующее почти к каждому действию на моих контроллерах.

public ActionResult EditStatus(int id)
    {
        if (!Request.IsAuthenticated)
            return RedirectToAction("Index", "Home");

        var status = sService.GetStatusById(id);

        // check if the logged in user has access to this status
        if (status.UserId != GetUserId())
            return RedirectToAction("Index", "Home");
    .
    .
    .
    }

    private Guid GetUserId()
    {
        if (Membership.GetUser() != null)
        {
            MembershipUser member = Membership.GetUser();
            Guid id = new Guid(member.ProviderUserKey.ToString());
            return id;
        }
        return Guid.Empty;
    }

Это повторение определенно кажется неправильным, и должен быть более элегантный способ обеспечения мои пользователи не могут получить доступ к данным друг друга - что мне не хватает?

5
задан Mogsdad 27 September 2015 в 01:49
поделиться