Я играю с ASP.NET MVC3 и пытаюсь сделать простую Регистрация «форму».Теперь я хочу сказать, что я пытаюсь сделать его мастером с двумя шагами.
- Аутентификация с помощью Facebook / Twitter / вашего любимого провайдера OpenId.
- Заполните все недостающие данныечто мне нужно (например, адрес электронной почты и имя).
Шаг 1 работает на 100% отлично :) Так что не беспокойтесь об этом.На шаге 2 у меня есть вопросы.
Итак, к вопросам: -
- Вид строго типизирован.Модель Poco
USER
.Он имеет ICollection<string>
OpenIds.Я хочу отображать только первый в Razer View.(который был установлен на шаге 1).
например.
<div class="editor-label">
<label for="Identifier">Identifier</label>
</div>
<div class="editor-field">
@Html.LabelFor(x => x.OpenIds.FirstOrDefault())
</div>
Но это дает мне следующую злую ошибку: -
Шаблоны могут использоваться только с доступом к полям, доступом к свойствам, индексом одноразмерного массива или выражениями настраиваемого индексатора с одним параметром.
Во-вторых, я не уверен, что есть какая-то безопасностьреализации, которые я должен рассмотреть .. потому что это мастер SignUp
в некоторых отношениях - не возможно ли, чтобы пользователь мог перейти прямо к шагу 2 (т.е. HTTP-GET /authentication/new
) и не предоставил идентификатор OpenId ИЛИ не предоставил какой-либо один... но поскольку они пропустили первый шаг (который отправляет пользователя на сайт OpenId и снова сюда), они избежали аутентификации.Какие шаги я должен предпринять, чтобы защитить себя от взлома такого типа?Я не могу использовать атрибут [Authorize]
ни на шаге 1, ни на шаге 2, потому что это только в конце шага 2 (т. Е. HTTP-POST /authentication/create
) .. наконец я FormsAuthentication.SignIn(..)
.
Фу!Это имело смысл?
Приветствия:)