2012-10-03 14 views
7

Stworzyłem aplikację asp.net mvc4 za pomocą maszynki do golenia, jestem nowy w tej technologii i próbuję wymyślić sposób, aby wyświetlić listę zarejestrowanych użytkowników do administrator po zalogowaniu się przez admin. Członkostwo używa system.web.providers. Czy ktokolwiek może powiedzieć po pierwsze, w jaki sposób utworzyć oddzielne role dla użytkowników, admin, używając struktury encji po drugie, jak uzyskać i wyświetlić listę wszystkich zarejestrowanych użytkowników z różnymi rolami dla administratora.jak wyświetlić listę zarejestrowanych użytkowników admin w asp.net aplikacji mvc4

Z góry dziękuję. Pozdrowienia

Odpowiedz

15
[Authorize(Roles = "Admin")] 
public ActionResult Index() 
{ 
    using (var ctx = new UsersContext()) 
    { 
     return View(ctx.UserProfiles.ToList()); 
    } 
} 

iw widoku:

@using MvcApplication1.Models 
@model IEnumerable<UserProfile> 
@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Index</title> 
</head> 
<body> 
    <h2>Users list</h2> 
    <table> 
     <thead> 
      <tr> 
       <th>id</th> 
       <th>name</th> 
      </tr> 
     </thead> 
     <tbody> 
      @foreach (var user in Model) 
      { 
       <tr> 
        <td>@user.UserId</td> 
        <td>@user.UserName</td> 
       </tr> 
      } 
     </tbody> 
    </table> 
</body> 
</html> 

oczywiście w porządku, aby móc uzyskać dostęp do działania /users/index kontrolera trzeba najpierw użytkowników i ról. Tylko użytkownik w roli administratora będzie mógł go wywołać.

Oto tutorial, który wyjaśnia, w jaki sposób można użyć migracji, aby zasiać bazę danych niektórymi kontami.

Oto jak konfiguracja migracja próbka może wyglądać następująco:

internal sealed class Configuration : DbMigrationsConfiguration<UsersContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
    } 

    protected override void Seed(UsersContext context) 
    { 
     WebSecurity.InitializeDatabaseConnection(
      "DefaultConnection", 
      "UserProfile", 
      "UserId", 
      "UserName", 
      autoCreateTables: true 
     ); 

     if (!Roles.RoleExists("Admin")) 
     { 
      Roles.CreateRole("Admin"); 
     } 

     if (!WebSecurity.UserExists("john")) 
     { 
      WebSecurity.CreateUserAndAccount("john", "secret"); 
     } 

     if (!Roles.GetRolesForUser("john").Contains("Admin")) 
     { 
      Roles.AddUsersToRoles(new[] { "john" }, new[] { "Admin" }); 
     } 
    } 
} 
+0

musiałem dodać @model IEnumerable moim zdaniem, aby uzyskać to do pracy ze standardem (model => modelu .Nazwa Użytkownika). +1, ponieważ doprowadziło mnie to do prawidłowego działania. Nie do końca pewna, na czym polega różnica. Myślę, że jeśli znajdzie UserProfile, nie będzie potrzebował pełnego modelu plus ma instrukcję using. – Xaxum

+0

Sugeruje być może następujący wiersz do sprawdzania, czy użytkownik zawiera rolę ... if (! Roles.IsUserInRole ("john", "Admin")) –

Powiązane problemy