技术开发 频道

ASP.NET MVC3:用密码保护限制view访问

  当一个用户访问页面/Account/ChangePassword,如果他没有预先登陆或注册。MVC将自动把请求转到登陆页面。否则MVC将转到转到changePassword页。对于未验证的用户的跳转页面是在web.config里配置的。

<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>

  如果用户从来都没有注册过,那么他可以在登陆页点击注册跳转到注册页面。这个页面包含以下信息:Username、Email Address和Password。

  AccountController中的Register action 接收一个RegisterModel 类型的参数。在AccountModels中有一个类型被定义为RegisterModel,它包含了注册页面上元素的变量(username,EmailAddress,Password)。

  注册action

[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName,
model.Password, model.Email, null, null,
true, null, out createStatus);
if (createStatus ==
MembershipCreateStatus.Success)
{
FormsAuthentication.SetAuthCookie(
model.UserName,
false /* createPersistentCookie */);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("",
ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed,
// redisplay form
return View(model);

   上边的代码是自动生成的,他们做了三件重要的事。

  ①通过Membership.CreateUser()方法创建了一个新的用户。

  ②如果创建成功,设置一个cookie给user 确保他可以访问随后的页面。

  ③如果创建成功,会跳转到主页(如果创建失败,将会把错误消息显示到指定的view)。

  如果你已经安装了完整版本的visual studio和SQL Express。你可以在数据库里看到你创建的user。

  方法是:在解决方案管理器里查看AppData下的ASPNETDB.MDF。直接打开就可以。下图是我刚刚创建的一个用户。

  默认的数据库连接字符串在webconfig里。

<connectionStrings>
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;
User Instance=true"providerName="System.Data.SqlClient"/>
</connectionStrings>
0
相关文章