7

カミソリエンジンを使用してasp.net mvc4アプリケーションを作成しました。このテクノロジーは初めてで、管理者がログインした後に登録ユーザーのリストを管理者に表示する方法を見つけようとしています。メンバーシップはsystem.web.providersを使用しています。誰でも教えてください-最初にユーザーに個別のロールを作成する方法、エンティティフレームワークを使用して管理する方法、次に管理者に異なるロールを持つすべての登録ユーザーのリストを取得して表示する方法.

前もって感謝します。よろしく

4

1 に答える 1

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

とビューで:

@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>

もちろん、/users/indexコントローラーアクションにアクセスできるようにするには、最初にユーザーとロールを用意する必要があります。管理者ロールのユーザーのみがそれを呼び出すことができます。

これは、データベースにいくつtutorialかのアカウントをシードするために移行を使用する方法を説明するものです。

サンプルの移行構成は次のようになります。

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" });
        }
    }
}
于 2012-10-03T12:15:33.257 に答える