ASP.NET MVC - доступ пользователя для каталога - PullRequest
1 голос
/ 04 декабря 2010

Как я могу добавить ограниченный доступ только к 1 конкретному пользователю, имеющему доступ к 1 конкретному каталогу, и никто другой не может получить к нему доступ, кроме него? Я посмотрел на web.config, но это не сработает.

Итак, в основном я пытаюсь:

Пользователь создает пользователя => новый пользователь => новый каталог (доступ ТОЛЬКО для нового пользователя и ни для кого другого).

Заранее спасибо.

1 Ответ

1 голос
/ 05 декабря 2010

Приложение, над которым я сейчас работаю, использует оформление «Авторизовать» совместно с поставщиками членства и ролей (как пользовательскими), чтобы управлять доступом к страницам на моем сайте MVC, например,

[Authorize(Users="MyUsername")]
public ActionResult Banking()
{
   return View();
}

[Authorize(Roles="SysAdmin, BusinessOwner")]
public ActionResult Banking()
{
   return View();
}

Я считаю, что это чрезвычайногибкий, так как вы можете сделать общедоступным (без оформления) любого вошедшего в систему пользователя [Authorize] или ролей и пользователей.Лично я бы никогда не создал приложение, авторизованное для пользователей. Роли - это гораздо более расширяемый вариант (даже если он на данный момент содержит только одного пользователя), есть две основные причины, по которым я бы не стал этого делать: пользователи становятся громоздкими в большомприложение и, во-вторых, добавление пользователя в оформление требует перекомпиляции / повторного развертывания приложения, в то время как в большинстве случаев привязка пользователя к роли обычно является связью базы данных, которую бизнес-логика приложения обрабатывает во время выполнения.

В вашей сети.config вы настраиваете что-то похожее на это для использования пользовательских провайдеров:

 <system.web>
<membership defaultProvider="MyMembership" userIsOnlineTimeWindow="30">
  <providers>
    <clear/>
    <add name="MyMembership" type="MyDAL.MyMembership, MyDAL"/>
  </providers>
</membership>
<roleManager defaultProvider="MyRole" enabled="true" cacheRolesInCookie="true">
  <providers>
    <clear/>
    <add name="MyRole" type="MyDAL.MyRole, MyDAL" />
  </providers>
</roleManager>

Затем вы создаете классы, которые наследуют провайдеров:

using System.Web.Security;

namespace MyDAL
{
    class MyMembership : MembershipProvider//[ctrl + .] to create stubs
    {
        //Use Visual Studio to generate all the MembershipProvider stubs [ctrl + .]
    }
}

В итоге вы получите кучуметоды с throw new NotImplementedException () - их много, но нет необходимости заполнять их все - просто заполните те, которые относятся к вашему приложению, и оставьте все остальное как есть.

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