0

我正在玩 ASP.NET MVC3,我正在尝试做一个简单的注册“表单”。现在,最重要的是我正试图通过 2 个步骤将其变成一个向导。

  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(..)

呸!这有意义吗?

干杯:)

4

1 回答 1

2
  1. LabelFor旨在为<label>normal 提供一个元素<input>
    你不应该在这里使用它。
    相反,您应该使用普通的 HTML 标记。

  2. 检查您是否真的获得了 OpenID。

于 2011-02-28T13:50:25.283 回答