asp.net2.0安全性(4)--Login系列控件--转载来自车老师

前面主要说了与安全相关的一系列的类,现在我们使用这些类就可以做出我们自己的安全系统了。其实微软的目的远不至于此,下面我们就来看一下微软为我们提供的Login系列控件。

Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径。

Login系列控件包含下列控件:

Login                           登录控件

LoginName                   用于显示用户名的控件

LoginStatus                  根据用户的登录状态显示不同的信息(登录,注销)

LoginView                    根据登录状态的不同显示不同的模板

CreateUserWizard          提供了一个注册用户账号的向导模板

ChangePassword           更改密码

PasswordRecovery        当忘记密码的时候用于取回密码

以上几种控件的底层都与MembershipApi集成的,这几种控件之间是相互独立的,可以单独使用也可以搭配成一个较完整的安全管理。

Login控件:

登录界面,包含“用户名”、“密码”和登录按钮。

属性:

DestinationPageUrl        用户登录成功后转高的网页

FailureAction                登录失败进行的操作,Refresh和RedirectToLoginPage两种操作

RememberMeSet           设置“记住我”复选控。

CreateUserUrl               注册用户帐号的页面

HelpPageUrl                  说明页面的URL

PasswordRecoveryUrl   密码恢复页面的URL

Login控件提供了一系列的预定义的样式,可以从“智能菜单”中点击“自动套用格式...”进行选择。也可以选择“转换为模板”,自己设置要显示的样式。

当你输入用户名和密码进行登录的时候,登录控件会自动去数据库中验证输入的用户名和密码。

自定义Authentication事件处理:

Login控件底层会使用Membership.Validate()和FormsAuthentication.RedirectFromLogin()方法进行验证,但有的时候我们己经有了现成的用户帐号和数据库的话,那如何做登录?

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)

{

string str = WebConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;

SqlConnection conn = new SqlConnection(str);

conn.Open();

SqlCommand cmd = conn.CreateCommand();

cmd.CommandText = "select count(*) from login where username = @u and password = @p";

SqlParameter param;

param = new SqlParameter("@u", Login1.UserName);

cmd.Parameters.Add(param);

param = new SqlParameter("@p",Login1.Password);

cmd.Parameters.Add(param);

int n = (int)cmd.ExecuteScalar();

conn.Close();

if (n > 0)

e.Authenticated = true;

else

e.Authenticated = false;

}

自定义Login控件模板

现有的Login控件可能显得太单调,如果你想自定义登录控件应当如何操作?单击智能标签“转换为模板”,这样就可以设置你自己的控件了。

帐号的TextBox的id属性必须设置为:UserName

密码的TextBox的id属性必须设置为:Password

登录按钮的CommandName属性必须设为Login

LoginName控件:

把LoginName控件拖到界面中就可以完成了。

LoginStatus控件:

LoginStatus控件是个超链接,未登录的时候显示“登录”,登录以后显示“注销”,以提示用户登录或注销,其背后的运作原理是Request.IsAuthentication或User.Identity.IsAuthenticated作为判断依据。如果登录失败则转到Web.Config文件中指定的页面,如果登录成功则转到LoginStatus控件所在的网页。

属性:

LoginText:设置或获取登录文字

LogoutText:设置或获取注销文字

LoginImageUrl:设置登录超链的图片。

LogoutImageUrl:设置注销超链的图片。

LogoutAction:注销后的操作,Refresh、Redirect、RedirectToLoginPage

LogoutPageUrl:如果LogoutAction属性设为Redirect,则注销后转到LogoutPageUrl所设置的网址

LoginView控件:

默认有两个模板:AnonymousTemplate和LoggedInTemplate,分别为匿名用户和登录后的两个模板,这样就可以为匿名用户和登录用户显示不同的界面了。

另外LoginView控件还可以根据不同的角色创建不同的模板。选择智能标签的“编辑RoleGroups”可以添加新的模板,然后在视图中选择要编辑的角色模板就可以定义角色模板的样式了。

注意:如果一个用户有多个角色的话,那么,当他登录后就会LoginView控件显示他的第一个角色所对应的模板,而不是显示他所有角色的模板。

CreateUserWizard控件:

CreateUserWizard控件提供了一个用户注册的界面,它是一个向导控件,可以自己套用样式,该控件说简单,它也简单,说复杂也真够复杂的。只所以说它简单,是因为当你只是创建简单的注册页面时,将它拖到页面上设置一下样式就可以使用了。要说它复杂呢,是因为它的灵活性太强了,你可以自定义模板,加入自己的一些用户个性化信息。这里我不想多说,它是一个向导控件,所以它的自定义功能,我会在以后的Wizard控件中详细说明。

ChangePassword控件:

ChangePassword控件就是一个用户更改密码的控件,但只允许通过身份验证的用户更改,并且要求输入原来的旧密码。

PasswordRecovery控件:

当用户忘记密码的时候可以通过系统的安全问题,若回答正确系统就会自动寄一封Email给该帐户的用户,里面附有密码。

这种功能先决条件是你的网站要用SMTP服务设置

在Web.Config中设置:

<system.net>

<mailSettings>

<smtp from="[email protected]">

<network host="192.168.1.2" password="" userName="" />

</smtp>

</mailSettings>

</system.net>

或者:

“网站”-“asp.net配置”,开asp.net web应用程序管理器,再选择“应用程序”-“配置SMTP电子邮件设置”,在新的页面中设置你的邮件内容就可以了。
(车延禄)

收藏于 2007-07-11

时间: 2024-11-03 22:04:31

asp.net2.0安全性(4)--Login系列控件--转载来自车老师的相关文章

asp.net2.0安全性(3)--验证与授权--转载来自车老师

"验证"与"授权"是对网页资源安全管理的两道门. 验证(Authentication):检查用户是否是合法的用户.就像是网站大门口的保卫,服责验证使用的用户名和密码. 授权(Authorization):检查用户是否有访问某种资源的权限.例如有的人虽然能过了环保局门口保卫的验证,进入环保局,但他可能是一个普通科员,那他就没有局长职责. 验证与授权的底层运作: 首先,打开windows操作系统的“管理工具”->“计算机管理”->“本地用户和组”->“

asp.net2.0安全性(1)--用户角色篇(起篇)--转载来自车老师

安全管理的解决方案在.net1.1中几乎为一片空白,对于应用程序的验证与授权大部分的工作是开发人员自己编写代码,或者是借助企业库等工具来实现,此可谓.net1.1中的一大缺憾.在.net2.0中微软为我们提供了一系列的API类和控件,大大简化了我们在此方面的工作量. 下面我将推出一系列的随笔介绍asp.net2.0的安全系统. Asp.net2.0中提供了一系列的控件实现验证与授权中的各种功能,这些控件我将在以后讲述.但喜欢思考的朋友们可能会问:这些控件是怎样实现了这一系列的功能呢?答案是:通过

asp.net2.0安全性(1)--用户角色篇(类)--转载来自车老师

Membership.MembershipUser和Roles类 用户与角色管理在asp.net2.0中是通过Membership和Roles两个类来实现的. Membership:用户成员账号管理,用户名.密码.邮箱等 Roles:负责用户和群组之间关系管理. l         Membership类: 主要是创建用户帐号.验证用户身份和管理用户设置 属性: 1)        EnablePasswordReset:获取一个值,以指示是否可以重置密码. 2)        EnablePa

asp.net2.0安全性(2)--用户个性化设置(2)--转载来自车老师

上一篇我们用Profile.age等方式可以读取用户的年龄和其它的信息,但有的时候我们要查询显示所有用户的信息,但asp.net没有提供查询所有用户信息的功能,我们只能对现有的用户逐一查询其Profile信息. 第一步:设置配置文件 第二步:得到所有的用户 MembershipUserCollection users = Membership.GetAllUsers(); 这里用到了Membership类的GetAllUsers()方法,此内容已经在“用户与角色管理”中说过,不再赘述. 第三步:

asp.net2.0安全性(2)--用户个性化设置(1)--转载来自车老师

在Membership表中可以存储一些用户的基本信息,但有的时候,我们需要记录的用户信息远远不止Membership表中提供的这些,如QQ.MSN.家庭住址.联系电话等等.那如何把这些用户信息记录到数据库中呢?在asp.net2.0中为我们提供了个性设置的功能――Profile.下面看一下Profile的几个特征: 1)        Profile根据每个用户存储各自的用户资料,包括匿名称用的资料. 2)        Profile可以在Web.Config中定义而立即生效,不必手动扩充数据

asp.net2.0安全性(1)--用户角色篇(代码实现1)--转载来自车老师

创建用户: MembershipCreateStatus mc; Membership.CreateUser(txtUid.Text, txtPwd.Text, txtEmail.Text, txtQuestion.Text, txtAnswer.Text, true, out mc); Response.Write(mc.ToString()); 删除用户: if (Membership.DeleteUser(txtUid.Text))//获取用户key主键Membership.DeleteU

asp.net2.0安全性(1)--用户角色篇(代码实现2)--转载来自车老师

加载所有用户 MembershipUserCollection user = Membership.GetAllUsers(); listUser.DataSource = user; listUser.DataBind(); 加载所有角色 string[] role = Roles.GetAllRoles(); listRole.DataSource = role; listRole.DataBind(); 添加新角色 Roles.CreateRole(txtRole.Text); 删除角色

在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table)

原文:在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table) 打印指定内容: <html> <head> <script   type= "text/javascript "   language= "javascript "> function   printPage()   {   var   newWin   =   window.open( 'about:blank ', ' ', ' ');   v

ASP.NET2.0 ObjectDataSource的使用详解《转》

原文发布时间为:2008-08-02 -- 来源于本人的百度文章 [由搬家工具导入] ASP.NET2.0 ObjectDataSource的使用详解(2) http://mqingqing123.cnblogs.com/archive/2006/04/20/379720.html           这是因为GridView 和其他数据绑定控件调用 Update 操作的自动功能需依赖此命名约定才能工作。参数的命名预期应与 SelectCommand 返回的关联字段值相同。使用此命名约定使得数据