Нужна помощь, чтобы заставить мой ASP.NET MVC 3 Razor «Зарегистрироваться» работать - PullRequest
0 голосов
/ 28 февраля 2011

Я играю с ASP.NET MVC3 и пытаюсь сделать простую Регистрация «форму».Теперь я хочу сказать, что я пытаюсь сделать его мастером с двумя шагами.

  1. Аутентификация с помощью Facebook / Twitter / вашего любимого провайдера OpenId.
  2. Заполните все недостающие данныечто мне нужно (например, адрес электронной почты и имя).

Шаг 1 работает на 100% отлично :) Так что не беспокойтесь об этом.На шаге 2 у меня есть вопросы.

Итак, к вопросам: -

  1. Вид строго типизирован.Модель 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(..).

Фу!Это имело смысл?

Приветствия:)

1 Ответ

2 голосов
/ 28 февраля 2011
  1. LabelFor предназначен для предоставления элемента <label> для обычного <input>.
    Вы не должны использовать его здесь.
    Вместо этого вы должны использовать обычный HTMLtag.

  2. Проверьте, действительно ли вы получили OpenID.

...