【asp源码栏目提醒】:网学会员在asp源码频道为大家收集整理了“ASP.NET程序设计教程(C#版) 课件 教学PPT 作者 崔淼 第12章 ASP.NET的安全管理 - 大学课件“提供大家参考,希望对大家有所帮助!
第12章
ASP.NET的安全管理本章讲述的主要内容12.1 用户身份认证12.2 使用网站管理工具进行安全设置12.3 使用登录控件12.4 使用Membership API 12.1 用户身份认证12.1.1 传统的认证方法 所谓传统的
ASP.NET用户身份认证是指,使用Session对象保存用户登录成功与否和用户“角色”等信息。
当用户访问除了登录页面之外的其他页面时,程序首先检测Session对象中保存的数据,从而判断用户是否已通过了身份验证,若用户用户属于直接调用本页面URL并未通过身份认证则跳转回登录页面,否则继续执行后续代码(即本网页功能实现代码)。
用户登录成功后,
ASP.NET应用程序会从Session中读取用户的“角色”信息,根据“角色”不同返回不同的页面或同一页面中不同的内容。
12.1 用户身份认证12.1.2 基于角色的安全管理简介 基于角色的安全管理技术主要包括以下两个方面的内容:1 用户身份认证:主要包括:新用户注册、用户登录、修改密码、遗忘密码处理、显示状态和其他有关信息等。
这些操作基本上都可以通过工具箱“登录”选项卡中的7个控件来完成。
2 用户权限管理:主要包括:为用户分配角色和为角色分配可访问资源等。
使用基于角色的安全管理技术需要开发人员创建
ASP.NET网站时,根据资源的级别不同使用树形目录的方式进行组织。
12.2 使用网站管理工具进行安全设置12.2.1 连接SQL Server数据库在使用
ASP.NET网站管理工具前,首先需要建立与Microsoft SQLServer数据库的连接,并创建用于存放用户信息、角色信息、安全规则等信息的数据表。
如果使用外部SQL Server数据库,则需要运行
Asp.net SQL Server注册工具(aspnet_regsql.exe),并通过向导完成相应的操作。
该工具作为一个单独的工具程序,默认存放在C:WINDOWSMicrosoft.NETFrameworkv2.0.50727中。
执行Windows“开始”菜单中的“运行”命令,输入“cmd”后单击“确定”按钮,进入命令提示符窗口键入“cdwindowsmicrosoft.netframeworkv2.0.50727”后按〈Enter〉键,将当前目录切换到
Asp.net SQL Server注册工具所在的位置。
键入“aspnet_regsql”后按〈Enter〉键,启动
ASP.NET SQL Server安装向导,。
安装向导, 12.2 使用网站管理工具进行安全设置12.2.2 使用
ASP.NET网站管理工具 1. 规划网站文件夹 2. 创建和管理用户 3. 创建和管理角色 4. 创建和管理网站访问规则 12.3 使用登录控件12.3.1 Login控件 12.3 使用登录控件12.3.2 CreateUserWizard控件 创建新用户控件(CreateUserWizard)用于向数据库中添加新用户的相关记录。
使用该控件需要新建一个Web窗体,并将控件从工具箱中添加到页面中。
需要设置Login控件的CreateUserText和CreateUserUrl属性值,以显示用于跳转到添加新用户页面的链接文本和目标URL。
12.3 使用登录控件12.3.3 LoginName和LoginStatus控件1. LoginName控件LoginName控件用于显示登录用户的用户名信息,通过该控件的FormatString属性可以设置输出信息的内容和格式。
FormatString属性的默认值为“0”表示登录用户的用户名,在属性窗口或代码中可使用HTML标记重新设置。
2. LoginStatus控件LoginStatus控件能根据当前用户的验证状态显示为一个登录(Login)或注销(Logout)链接按钮。
当用户单击“登录”链接后,默认的会跳转到页面Login.aspx中。
而单击“注销”链接,将会从该网站中注销当前用户的登录。
12.3 使用登录控件12.3.4 LoginView控件
ASP.NET网站中通常需要根据用户角色不同返回不同的页面。
在早期版本中实现这一功能需要程序员手工编写相应的代码。
自
ASP.NET 2.0之后出现的LoginView(登录视图)控件可使程序员几乎不必编写任何代码即可实现上述功能。
12.3 使用登录控件12.3.5 ChangePassword和PasswordRecovery控件 1. ChangePassword控件 ChangePassword控件有2中不同的用法,一种是在用户登录后通过登录时使用的用户名进行密码修改,在这种方式下控件中不显示用户名栏,控件界面如图12-25所示。
再一种是无论登录与否,用户可以在控件中输入用户名、密码、新密码、确认新密码后进行密码修改,控件界面如图12-26所示。
是否显示用户名栏由控件的DisplayUserName属性决定,默认值为false即不显示用户名栏。
12.3 使用登录控件12.3.5 ChangePassword和PasswordRecovery控件2. PasswordRecovery控件PasswordRecovery控件可根据用户注册时提供的“安全问题”、“安全问题答案”来确定遗忘密码的用户的合法身份,正确回答了安全问题后能自动修改用户密码为一个随机字符串,并使用指定的SMTP服务器向用户电子邮箱发送新密码。
从PasswordRecovery控件的工作机制可以看出,要找回恢复遗忘了密码的帐户,前提条件有以下2个:1 用户注册时填写的电子邮箱必须是有效的。
2
ASP.NET网站必须有权使用某个SMTP服务器,将由程序自动生成的电子邮件正确地发送到用户邮箱。
12.4 使用Membership API12.4.1 用户管理1. 创建用户使用Membership.CreatUser方法可以非常方便地完成新用户创建工作。
该方法的语法格式如下所示:Membership.CreateUserUsername Password Email QuestionAnswer IsApproved Status语句执行后返回一个用于新创建用户的MembershipUser对象,如果创建用户不成功则返回一个null。
12.4 使用Membership API12.4.1 用户管理2. 查找和删除用户一般情况下,在删除用户前首先需要使用Membership类提供的GetUser、FindUserByName或FindUserByEmail方法,从数据库中找到希望删除的用户,而后再调用DeleteUser方法进行删除。
3. 修改用户数据使用MembershipUser类提供的方法可以对指定用户进行密码、电子邮件、安全问题及安全问题答案等数据的修改。
1 修改密码ChangePasswordOldPassword NewPassword 12.4 使用Membership API12.4.1 用户管理3. 修改用户数据2 修改安全问题和安全问题答案MembershipUser类提供的ChangePasswordQuestionAndAnswer用于修改安全问题及答案,其语法格式为:ChangePasswordQuestionAndAnswerPassword NewQuestionNewAnswer3 修改电子邮件地址通过查找用户的方法得到MembershipUser类型的返回值,为返回值的Email属性赋以新值(新的邮箱地址),而后调用Membership.UpdateUser方法将修改后的数据写入数据库即可完成修改用户邮箱地址的操作。
12.4 使用Membership API12.4.2 角色管理1. 创建新角色创建一个新角色可以使用Roles类的CreateRole方法来实现。
其语法格式如下所示: Roles.CreateRoleRoleName2. 删除角色删除数据库中现有角色可以使用Roles类的DeleteRole方法来实现,其语法格式如下:Roles.DeleteRoleRoleName3. 为用户分配角色为数据库中现有用户分配角色可以使用Roles类的AddUserToRole方法来实现,其语法格式如下所示:Roles.AddUsersToRoleUserArray RoleName 12.4 使用Membership API12.4.2 角色管理4. 从角色中删除用户从现有角色中删除用户可以使用Roles类的RemoveUserFromRole方法来实现。
其语法格式如下所示:Roles.RemoveUserFromRoleUsername RoleName其中,Username参数表示用户名,RoleName参数表示角色名。
例如,下列语句能将用户“lisi”从“admin”角色中删除。
Roles.RemoveUserFromRolelisi admin需要说明的是,从角色中删除用户并不会从数据库中删除用户记录,仅是取消了用户的角色身份。
12.4 使用Membership API12.4.2 角色管理5. 查询角色1 查询数据库中所有角色2 查询用户具有的角色3 查询具有某角色的所有用户