Программным, я могу авторизовать пользователя Windows, на основе того, являются ли они в той или иной роли так:Программировать авторизацию пользователя Windows против последовательности пользователей?
if(!User.Identity.IsAuthenticated)
return false;
var isAuthroized = User.IsInRole(@"DOMAIN\Some Role");
// ...
return isAuthorized;
То, что я не могу понять, как сделать, как совпадать с именем пользователя, если , например, предоставляется доступ к отдельным пользователям.
Итак, представьте, что вы пытаетесь проверить подлинность пользователя против данной строки авторизованных пользователей, как вы могли бы с помощью обычного AuthorizeAttribute:
[Authorize(Users = @"DOMAIN\User1, DOMAIN\User2, DOMAIN\User3")]
public ActionResult SomeAction(){ ... }
Как программно авторизовать пользователя от этой строки пользователей?
@"DOMAIN\User1, DOMAIN\User2, DOMAIN\User3"
EDIT: Хорошо, это моя точка путаницы: Что такое точка указать несколько пользователей, если у вас есть (в нормальной AuthorizeAttribute) заявление следующим образом:
[Authorize([email protected]"User1,User2,User3", [email protected]"SomeRole"]
// I can do this:
User.IsInRole(roles);
// But what's the equivalent for the specified users?
User.Identity.Name.IsInNames(names); // <-- How is the done programmatically?
I Вероятно, здесь нет отметки, и мне не хватает какой-то информации. Пожалуйста, просветите меня!
EDIT 2: Источник MVC демистифицировал часть этого для меня. Это действительно сделано аналогично тому, что было предложено в одном из приведенных ниже ответов:
if (_usersSplit.Length > 0 &&
!_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase)) {
return false;
}
Разве это не * * определить роль? –
«авторизуйте пользователя против строки пользователей?»? Я не понимаю. – capdragon
Предоставьте свою собственную роль (для которой, очевидно, потребуется ввести роли в пользователя), который инкапсулирует список пользователей и пользовательский интерфейс управления. –