Инструмент администрирования веб-сайта .NET - PullRequest
0 голосов
/ 06 сентября 2011

Как я могу "Включить / отключить роли" или "Создать или управлять ролями" без инструмента администрирования веб-сайта ASP.NET? Я могу создать пользователя / управлять пользователем / включить пользователя и т. Д. Для моего веб-приложения MVC3, используя этот инструмент. Однако я хотел бы предоставить этот инструмент администраторам для «Создание / Управление ролями», и на их рабочих станциях не установлена ​​Visual Studio.

Ответы [ 4 ]

1 голос
/ 06 сентября 2011

Вот как я занимаюсь редактированием пользователей и ролей.

В моем контроллере у меня есть следующий код. Не обращайте внимания на партнеров IList, вам это не понадобится. Вы захотите смоделировать пользователя в вашем AccountController (при условии, что вы используете это для своих учетных записей) с ролями.

public ActionResult Edit(string UserName)
{
    IList<Partner> partners = r.ListPartners();
    MembershipUser user = Membership.GetUser(UserName);
    UserProfile profile = UserProfile.GetProfile(user.UserName);
    User model = new User();
    model.UserName = user.UserName;
    model.Email = user.Email;
    model.ActiveAccount = user.IsApproved;
    model.PartnerID = profile.PartnerID;
    model.IsAdministrator = Roles.IsUserInRole(user.UserName, "Administrator");
    model.IsApprover = Roles.IsUserInRole(user.UserName, "Approver");
    model.IsContributor = Roles.IsUserInRole(user.UserName, "Contributor");
    model.IsReporter = Roles.IsUserInRole(user.UserName, "Reporter");
    IList<Partner> p = r.ListPartners();
    ViewBag.Partners = new SelectList(p.AsEnumerable(), "PartnerID", "Name", model.PartnerID);            
    return View(model);
}

Мой пост выглядит как

//
    // POST: /Account/Edit
    [HttpPost]
    public ActionResult Edit(User model)
    {
        MembershipUser user = Membership.GetUser(model.UserName);
        UserProfile profile = UserProfile.GetProfile(model.UserName);
        user.Email = model.Email;
        user.IsApproved = model.ActiveAccount;            
        profile.PartnerID = model.PartnerID;           

        #region If Else Block for Role 
        if (Roles.IsUserInRole(model.UserName, "Administrator") && !model.IsAdministrator)
        {
            Roles.RemoveUserFromRole(model.UserName, "Administrator");
        }
        else if (!Roles.IsUserInRole(model.UserName,"Administrator") && model.IsAdministrator)
        {
            Roles.AddUserToRole(model.UserName, "Administrator");
        }
        if (Roles.IsUserInRole(model.UserName, "Reporter") && !model.IsReporter)
        {
            Roles.RemoveUserFromRole(model.UserName, "Reporter");
        }
        else if (!Roles.IsUserInRole(model.UserName, "Reporter") && model.IsReporter)
        {
            Roles.AddUserToRole(model.UserName, "Reporter");
        }
        if (Roles.IsUserInRole(model.UserName, "Contributor") && !model.IsContributor)
        {
            Roles.RemoveUserFromRole(model.UserName, "Contributor");
        }
        else if (!Roles.IsUserInRole(model.UserName, "Contributor") && model.IsContributor)
        {
            Roles.AddUserToRole(model.UserName, "Contributor");
        }
        if (Roles.IsUserInRole(model.UserName, "Approver") && !model.IsApprover)
        {
            Roles.RemoveUserFromRole(model.UserName, "Approver");
        }
        else if (!Roles.IsUserInRole(model.UserName, "Approver") && model.IsApprover)
        {
            Roles.AddUserToRole(model.UserName, "Approver");
        }
        #endregion            
        Membership.UpdateUser(user);
        return RedirectToAction("ManageUsers", "Account"); 
    }

Надеюсь, это даст вам представление о том, что вам нужно делать. Я предполагаю, что вы можете создать представление нормально с вашей моделью пользователя.

1 голос
/ 06 сентября 2011

У вас есть легкий доступ к ролям из ваших контроллеров:

if (!Roles.RoleExists("Guest"))
   Roles.CreateRole("Guest");

Roles.AddUserToRole(userName, "Guest");

Так что, если вы просто создадите контроллер и пару Action + View, вы сможете создать свой собственный инструмент.1005 * И, конечно, вы захотите ограничить доступ:

[Authorize(Roles = "Admin, Super User")]
public class RolesController : Controller
{
}
1 голос
/ 06 сентября 2011

Вам потребуется создать собственный инструмент администрирования, использующий поставщика членства ASP.NET.

В качестве альтернативы может быть полезен проект с открытым исходным кодом на http://websitemanager.codeplex.com/.

0 голосов
/ 06 сентября 2011

Может быть, вам стоит «научить» их, как редактировать файл конфигурации сайта. Простое редактирование ролей не так уж важно, даже если они редактируют XML напрямую

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