许多 web 应用程序都要求能够限制对某些资源(例如特定页面)的访问,以确保只有经过身份验证的用户才能访问这些资源。asp.net mvc 的默认 web 应用程序项目模板提供了一个控制器以及一些数据模型和视图,您可使用这些为应用程序添加 asp.net 窗体身份验证功能。
1.帐户控制器、模型和视图
  在 controllers 文件夹中,accountcontroller 控制器类中包含某些操作方法,这些方法可注册新用户、在应用程序中登录和注销用户以及更改现有用户的密码。在 views 文件夹中,accounts 文件夹中包含支持这些操作的视图。在 models 文件夹中,accountmodels 类包含某些类,这些类定义数据对象、服务以及支持窗体身份验证的验证例程。
  在 views 文件夹中,shared 子文件夹包含一个名为 _logonpartial.cshtml 页面,该控件指示用户是否已经登录。如果用户没有登录,则该控件会显示“登录”以及指向 logon 视图的链接。如果用户已经登录,则该控件会显示一条欢迎消息,其中包含用户名以及用户可用以注销的链接。

1 @if(request.isauthenticated) {
2     <text>欢迎使用 <b>@context.user.identity.name</b>!
3     [ @html.actionlink(“注销”, “logoff”, “account”) ]</text>
4 }
5 else {
6     @:[ @html.actionlink(“登录”, “logon”, “account”) ]
7 }

1 @html.partial(“_logonpartial”)
2.注册
  在 logon 视图中添加一个“注册”链接。因此,每次用户登录时均会显示指向 register 视图的链接。
1     请输入用户名和密码。@html.actionlink(“注册”, “register”)如果您没有帐户。
3.更改密码
  在 _logonpartial.cshtml 页面中添加一个“更改密码”链接。因此,每当用户登录之后均会显示指向 changepassword 视图的链接。
1 [ <%: html.actionlink(“更改密码”, “changepassword”, “account”) %> ]
4.限制对视图的访问
  可以指定应用程序的哪些部分只能由经过身份验证的用户访问。限制对某个视图的访问需使用 authorizeattribute 特性标记创建该视图的操作方法。可以使用 authorizeattribute 特性标记某个控制器自身,以限制对该控制器所有视图的访问。
  打开 homecontroller 类,然后找到 about 操作方法,将 authorizeattribute 特性添加到 about 操作方法声明中。

1         //限制对 about 视图的访问。
2         [authorize]
3         public actionresult about()
4         {
5             return view();
6         }

   单击“关于”选项卡,将显示 logon 视图,因为现在您必须登录才能查看 about 页面。

摘自 依信依誉