Приложение, над которым я сейчас работаю, использует оформление «Авторизовать» совместно с поставщиками членства и ролей (как пользовательскими), чтобы управлять доступом к страницам на моем сайте 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 () - их много, но нет необходимости заполнять их все - просто заполните те, которые относятся к вашему приложению, и оставьте все остальное как есть.