サイドノート:私はvs2013 expressを使用していて他には何もインストールしていません。
私は建てています イントラネットサイト 以下の認証/許可の目標
- Rolesクラスを使用したカスタムロール
- ログインする必要はありませんあなたがWindowsにサインインしているなら、あなたは "アプリを見ることを許可され
- [Authorize(Roles = "Admin")]種類の属性を使用できる
- UserManagementページからユーザーを管理(作成/削除/一覧表示/編集)できます。
しかし、私はユーザーの作成/一覧表示の仕方がよくわかりません。
私は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"