【IT168技术】假设有这么一个场景:你想阻止用户访问你网站的特定页面,除非用户已经注册并且使用了用户名和密码登陆。
解决方案:使用一个AccountController,AccountModels 和 几个MVC View,配合ASP.NET的 AuthorizeAttribute 特性,FormsAuthentication和Membership creation/validation。
讨论
微软的MVC团队已经对账户controller做了很多的改进。它已经被更新用于Form验证,连同Membership 类去创建新的用户,验证存在的用户,创建cookie去检测用户登入的状态。
在MVC 3中 已经提供了几种默认的应用程序模板。如下图。
①Empty,一个空的模板将创建一些MVC需要的文件结构。
②Internet Application,一个因特网应用程序的默认的模板将要包含一些预配置:basic layout,一个AccountController包含了多个action(注册,登陆,修改密码等)。
③Intranet Application,内部网应用程序。他和第二个模板类似。但是他没有使用Membership 类,而是使用了windows身份验证。
对于大多数网站,我们默认应该使用第二个模板。如果你现在还没有这样做,你可以现在创建一个MVC 3 Internet Application。
这将生成AccountController, AccountModels 和几个Account的Views(用户注册,登陆,修改密码)。
为了组织用户访问特定的view,MVC 提供了一个AuthorizeAttribute 特性。打开AccountController你可以看到如下代码:
它的意图是只有登陆用户才可以访问密码修改页面。