/ / Я додав користувача та призначив його ролі, коли я використовую Membership.GetAllUsers (), він не повертає жодного - c #, asp.net, member, asp.net-mvc-5, sqlmembershipprovider

Я додав користувача та призначив його на роль, коли я використовую Membership.GetAllUsers (), він повертає ні - c #, asp.net, member, asp.net-mvc-5, sqlmembershipprovider

Примітка: Я використовую vs2013 express і нічого іншого не встановив.

Я будую Інтранет-сайт з наступними цілями автентифікації / авторизації:

  • Спеціальні ролі за допомогою класу Ролі
  • Не потрібно входити в систему, якщо ви ввійшли у вікна, то вам дозволено переглядати програму
  • Вмійте використовувати атрибути [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);
}
}

Тому я припускаю, що користувач та роль адміністратора єпрацює правильно, і я бачу цілі в базі даних ... Вищезазначений контролер є частиною абстрактного -> конкретного відображення для конкретних користувачів постачальника членства ... але я налагодив у рядку GetAllUsers, і це фактично повертає порожній список, це "не те, що відображення йде не так.

Нарешті я називаю це:

            MembershipUserCollection users = Membership.GetAllUsers();

який не повертає користувачів.

Будь ідея?

введіть опис зображення тут

Відповіді:

0 для відповіді № 1

Спочатку потрібно створити користувача за допомогою статики Метод Membership.CreateUser:

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

А потім ви можете додати цього користувача до ролі.

Щодо Вашого коментаря:

Як мені створити користувача, якому не потрібен пароль, і все ж все ще зможете перерахувати користувачів?

Я не впевнений, але я думаю, що ви можете встановити пароль Членство властивості, щоб "0" була "необхідною довжиною" пароля.

Ви можете додати це до розділу членства на вашому web.config:

minRequiredPasswordLength="0"