2011-09-06 7 views
0

ASP.NET 웹 사이트 관리 도구없이 "역할을 사용하거나 사용하지 않도록 설정"또는 "역할을 만들거나 관리"할 수있는 방법은 무엇입니까? 이 도구를 사용하여 내 MVC3 웹 응용 프로그램에 사용자를 만들거나 사용자를 관리 할 수 ​​있습니다. 그러나이 도구를 관리자에게 "역할 만들기/관리"권한을 부여하고 워크 스테이션에 Visual Studio가 설치되어 있지 않습니다..NET 웹 사이트 관리 도구

답변

1

당신은 당신의 컨트롤러 내부에서 역할에 쉽게 액세스 할 수 있습니다

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

Roles.AddUserToRole(userName, "Guest"); 
당신은 단지 컨트롤러를 만들 경우에 따라서

과를 몇 가지 Action + View를 사용하면 나만의 도구를 만들 수 있습니다.

물론 액세스를 제한하는 것이 좋습니다 : 나는 편집의 사용자 및 역할을 취급하고 어떻게

[Authorize(Roles = "Admin, Super User")] 
public class RolesController : Controller 
{ 
} 
+0

나는 당신의 해결책을 시도 할 것이다. 고맙습니다! – rk1962

+0

나는 당신의 솔루션을 시도했고 효과가있었습니다. 정말 고맙습니다! – rk1962

+0

@ rk1962 자신 만의 역할 관리자 도구를 만드는 방법에 대한 코드를 공유 하시겠습니까? 내 시드 메서드에서 사용자가이 대답을 수 있지만 일단이 코드가 생산에 제공되면 어떻게 될지 걱정됩니다. – Komengem

1

ASP.NET 멤버 자격 공급자를 사용하는 자체 관리 도구를 만들어야합니다.

또는 오픈 소스 프로젝트 http://websitemanager.codeplex.com/이 유용 할 수 있습니다.

+0

Henk이 추천 한대로 내 관리 페이지를 만들려고합니다. 고맙습니다! – rk1962

0

웹 사이트 구성 파일을 편집하는 방법을 "교육"해야 할 수도 있습니다. 그냥 그들이 XML을 편집하는 경우에도 그렇게 큰 거래를 역할을하지 편집이 직접

1

이다.

내 컨트롤러에 다음 코드가 있습니다. 파트너 IList가 필요 없어도 괜찮습니다. 역할과 함께 AccountController에서 사용자를 모델링하고 싶을 것입니다 (사용자 계정에 이것을 사용한다고 가정).

// 
    // 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"); 
    } 

는 희망이 당신에게 당신이해야 할 일의 아이디어를 제공 같은

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); 
} 

내 포스트 보인다. 사용자 모델로보기를 만들 수 있다고 가정합니다.

+0

샘플 코드를 제공해 주셔서 감사합니다. – rk1962

관련 문제