шаблон по умолчанию asp.net mvc6 с индивидуальным счетом имеет следующие методы в AccountController
Условный AllowAnonymous
// GET: /Account/Register
[HttpGet]
[AllowAnonymous]
public IActionResult Register()
{
return View();
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model) {
...
}
Я хочу реализовать что-то простого, что позволит анонимный доступ к Register
методе только если пользователя уже нет.
Это нормально/хорошо расширять фильтр AllowAnonymous
, поэтому проверка Db перед возвратом true/false или я должен каким-то образом реализовать политику?
Если расширение атрибута или использование настраиваемой политики не являются хорошим решением, что вы рекомендуете?
Будет приятно, если бы кто-нибудь мог направить меня с образцом, где/как пользовательская логика.
Идея для раздела администратора, поэтому только зарегистрированные пользователи не могут регистрировать новые. Но если пользователь не зарегистрирован (сначала развертывается в пустой базе данных), я хочу, чтобы пользователь мог зарегистрироваться с именем пользователя/паролем.
Примечание с точки зрения безопасности: Имейте в виду, что могут регистрироваться только электронные адреса, которые могут быть зарегистрированы, поэтому даже если случайный пользователь попадает на страницу регистрации публичного лица, когда пользователь уже не зарегистрирован, он не сможет зарегистрировать его/ее личный адрес электронной почты
Если я возьму любое дополнительное соображение безопасности, я буду открыт, чтобы прочитать о них.
Интересно. Чтобы защитить пост-операцию, я должен использовать соль для этого конкретного метода, чтобы кто-то не мог использовать токен из другой части сайта. Правильно? –