2011-09-06 21 views
0

ASP.NET Webサイト管理ツールを使用せずに、「ロールを有効/無効にする」または「ロールを作成または管理する」方法を教えてください。私はこのツールを使用してMVC3 Webアプリケーションのユーザ/ユーザの管理/ユーザの有効化などを作成することができます。しかし、私はこのツールを管理者に "ロールの作成/管理"のために提供したいと思いますし、ワークステーションにVisual Studioをインストールしていません。.NET Webサイト管理ツール

答えて

1

をXMLを編集している場合でも、ちょうど役割を編集すると、あなたはあなたのコントローラ内部からの役割への容易なアクセスを持っている、そのような大したことではありませんアクション+ビューのカップルはあなた自身のツールを作ることができます。

そしてもちろん、あなたはアクセスを制限することになるでしょう:

[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

ウェブサイトの設定ファイルを編集する方法を教えてください。あなただけのコントローラとAを作成するのであれば

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

Roles.AddUserToRole(userName, "Guest"); 

:彼らは直接

1

これは私が編集ユーザーとロールを扱っています方法です。

私のコントローラには、次のコードがあります。あなたがそれを必要としないパートナー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"); 
    } 

のように見えますうまくいけば、これはあなたが何をする必要があるかのアイデアを提供します。私はあなたのユーザーモデルでOKを作成することができますと仮定しています。

+0

サンプルコードありがとうございました。 – rk1962

関連する問題