Инструмент администрирования веб-сайта .NET

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


person rk1962    schedule 06.09.2011    source источник


Ответы (4)


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

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

Roles.AddUserToRole(userName, "Guest");

Итак, если вы просто создадите контроллер и пару Action+View, вы сможете создать свой собственный инструмент.

И, конечно же, вы захотите ограничить доступ:

[Authorize(Roles = "Admin, Super User")]
public class RolesController : Controller
{
}
person Henk Holterman    schedule 06.09.2011
comment
Я попробую ваше решение. Спасибо! - person rk1962; 06.09.2011
comment
@ rk1962, не могли бы вы поделиться кодом, как создать собственный инструмент управления ролями? Я могу использовать этот ответ в своем начальном методе, но я беспокоюсь о том, что произойдет, когда этот код будет отправлен в производство. - person Komengem; 17.02.2013

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

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

person Jeremy McGee    schedule 06.09.2011
comment
Я попытаюсь создать свою собственную административную страницу в соответствии с рекомендациями Хенка. Спасибо! - person rk1962; 06.09.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"); 
    }

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

person samack    schedule 06.09.2011

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

person Shady M. Najib    schedule 06.09.2011