9.3.12  成员管理和授权

9.3.12 成员管理和授权

1.增加AccountController和相应的视图

全功能的ASP.NET MVC3 Web应用程序与空的ASP.NET MVC3应用程序模板之间的区别在于,空的应用程序模板中没有包含账号控制器,可以从新创建的全功能的ASP.NET MVC应用程序中复制相应的文件,来增加账号控制器。

另外,在下载的MvcMusicStore-Assets.zip文件中,也包含了账号管理的文件。复制下面的内容到你的网站中。

■复制AccountController.cs到Controllers目录中;

■复制AccountModels.cs到Models目录中;

■在Views目录中创建Account目录,然后复制相应的4个视图。

注意修改控制器和模型类、视图类文件的命名空间为MvcMusicStore。AccountController类应该为MvcMusicStore.Controllers命名空间,AccountModels类应用使用MvcMusicStore.Models命名空间。

978-7-111-46863-9-Chapter09-117.jpg

图9-53 站点配置

2.使用ASP.NET站点配置工具增加管理员账号

在授权访问网站之前,需要先创建一个管理员账号,最简单的方式就是使用内建的ASP.NET站点管理工具创建。在解决方案管理器上,单击站点配置工具,如图9-53所示。

(1)启用角色。在打开的ASP.NET网站管理工具浏览器窗口中,单击首页中的安全选项卡,然后,单击屏幕中间的“启用角色”链接。如图9-54所示。

978-7-111-46863-9-Chapter09-118.jpg

图9-54 ASP.NET站点管理窗口

(2)创建角色。单击“创建或管理角色”链接。在如图9-55所示的创建新角色对话框中,在角色名称的输入框中输入“Administrator”,单击增加角色按钮,就创建了一个Admin-istrator角色。

978-7-111-46863-9-Chapter09-119.jpg

图9-55 创建新角色

(3)创建用户。回到“安全”选项卡,单击屏幕左边“创建用户”的链接。输入用户的基本信息。同时选择该用户属于Administrator角色,如图9-56所示。出现图9-57表示创建用户成功。这时可以关掉站点管理工具了。

978-7-111-46863-9-Chapter09-120.jpg

图9-56 添加用户

978-7-111-46863-9-Chapter09-121.jpg

图9-57 完成用户创建窗口

注意:可以使用任何口令,但是,默认的密码规则要求“口令至少为7个字符,其中包含至少一个非字母和数字的字符1”。这个意思是说,非字母和数字的字符至少必须有一个,也就是必须有“~!@#$%^&*()_+”中的一个字符。解决办法如下:找到/win-dows/Microsoft.NET/Framework[版本号]/Config目录下的machine.config文件,使用“编辑”菜单→“查找”功能找到minRequiredNonalphanumericCharacters="1"一行,只要把它改成0就可以了。当然也可以只修改当前站点的web.config文件,方法是将配置信息所在的<membership>….</membership>条目从machine.cofig复制到web.config文件中<sys-tem.web>…</system.web>,同时在<providers>….</providers>条目的开头加上<re-move name="AspNetSqlMembershipProvider"/>项。

ASP.NET通过XML格式的文件Machine.Config和Web.Config来完成对网站和网站目录的配置。对于一个网站整体而言,整个服务器的配置信息保存在Machine.Config文件中,该文件的具体位置在/windows/Microsoft.NET/Framework[版本号]/Config目录,它包含了运行一个ASP.NET服务器需要的所有配置信息。当你建立一个新的Web Project的时候,VS.NET会自动建立一个Web.Config文件,WEB.Config包含了各种专门针对一个具体应用的一些特殊的配置,比如Session的管理、错误捕捉等配置。一个Web.Config可以从Ma-chine.Config继承和重写部分备置信息。因此,对于ASP.NET而言,针对一个具体的ASP.NET应用或者一个具体的网站目录,是有两部分设置可以配置的,一是针对整个服务器的Machine.Config配置,另外一个是针对该网站或者该目录的Web.Config配置,一般的,Web.Config存在于独立网站的根目录,它对该目录和目录下的子目录起作用。Web.Config只影响单个Web应用。如果要影响特定Web服务器上的所有Web应用,可以在ma-chine.config中设置。

3.基于角色的授权

现在,可以使用[Authorize]标注来限制对StoreManage控制器的访问了,设置访问StoreManage任何Action的用户必须拥有Administrator的角色。代码如下:

978-7-111-46863-9-Chapter09-122.jpg

注意:[Authorize]也可以用在Action方法上。

现在浏览/StoreManage,将会被导航到登陆页面上,如图9-58所示。使用具有Admin-istrator角色的账号登陆之后,就可以进入StoreManage了。