/ /私はユーザーを追加し、私はMembership.GetAllUsers()を使用するときにそれがnoneを返すとき、彼をロールに割り当てました

Membership.GetAllUsers()を使用して、noneを返すと、ユーザーを追加して役割に割り当てました - c#、asp.net、member、asp.net-mvc-5、sqlmembershipprovider

サイドノート:私はvs2013 expressを使用していて他には何もインストールしていません。

私は建てています イントラネットサイト 以下の認証/許可の目標

  • Rolesクラスを使用したカスタムロール
  • ログインする必要はありませんあなたがWindowsにサインインしているなら、あなたは "アプリを見ることを許可され
  • [Authorize(Roles = "Admin")]種類の属性を使用できる
  • UserManagementページからユーザーを管理(作成/削除/一覧表示/編集)できます。

私はこれに従ってきました: http://weblogs.asp.net/scottgu/archive/2006/07/23/Recipe_3A00_-Implementing-Role-Based-Security-with-ASP.NET-using-Windows-Authentication-and-SQL-Server.aspx

しかし、私はユーザーの作成/一覧表示の仕方がよくわかりません。

私はMembership.GetAllUsers()を使用するとき私はユーザーを追加してロールに彼を割り当てました、それはどれも返しません

Web.configビット:

<authentication mode="Windows"></authentication>

<authorization>
<deny users="?" />
</authorization>

<roleManager enabled="true" defaultProvider="SqlRoleManager">
<providers>
<clear/>

<add name="SqlRoleManager"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="EFDbContext"
applicationName="TEST" />

</providers>
</roleManager>

<membership defaultProvider="SqlProvider"
userIsOnlineTimeWindow="15">
<providers>
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="EFDbContext"
applicationName="TEST"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10" />
</providers>
</membership>

私はこのようにGlobal.asaxに私の最初のユーザーを追加しました:

        if(!Roles.RoleExists("Admin"))
{
Roles.CreateRole("Admin");
Roles.AddUserToRole(@"JIMMYT1988jimmyt1988", "Admin");
}

管理者へのアクセスをブロックした場合は許可されますが、役割を追加せずにユーザーを作成した場合は、ユーザーと役割は正常に機能しています。

これは私が管理者の役割だけにアクセスをブロックしていることです

[Authorize(Roles = "Admin")]
public class UserController : Controller
{
private IUserRepository repository;

public UserController(IUserRepository repo)
{
repository = repo;
}

public PartialViewResult List()
{
IEnumerable<User> users = repository.Users;

UserListViewModel viewModel = new UserListViewModel();
viewModel.Users = users;
viewModel.TotalUsers = Membership.GetNumberOfUsersOnline().ToString();

return PartialView(viewModel);
}
}

だから私は管理者のユーザーと役割があると仮定しています上記のコントローラはabstract - >具体的なメンバーシッププロバイダユーザ向けの具体的なマッピングの一部です...しかし私はGetAllUsers行でデバッグしました、そしてそれは実際に空のリストを返しますマッピングが間違っているのではありません。

最後にこれを呼び出します。

            MembershipUserCollection users = Membership.GetAllUsers();

これはユーザーを返しません。

何か案が?

ここに画像の説明を入力

回答:

回答№1は0

まず、あなたは静的を使ってあなたのユーザーを作成する必要があります。 Membership.CreateUserメソッド

MembershipUser newUser = Membership.CreateUser(@"JIMMYT1988jimmyt1988", "password");

そして、そのユーザーをロールに追加できます。

あなたのコメントについて:

パスワードを必要とせず、まだパスワードを必要としないユーザーを作成する方法 まだユーザーをリストすることができますか?

私はポジティブではありませんが、関連するパスワードを設定できると思います メンバーシップ 「0」を持つプロパティは、パスワードの「必須長」です。

これをweb.configのメンバーシップセクションに追加することができます。

minRequiredPasswordLength="0"