欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET MVC 3 直到我膝盖中了一箭【6】Forms身份验证

程序员文章站 2022-03-30 21:50:12
许多 web 应用程序都要求能够限制对某些资源(例如特定页面)的访问,以确保只有经过身份验证的用户才能访问这些资源。asp.net mvc 的默认 web 应用程序项目模板提供了一...

许多 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 页面。

摘自 依信依誉