原文:asp.net 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控件提供了一个用户注册的界面,它是一个向导控件,可以自己套用样式,该控件说简单,它也简单,说复杂也真够复杂的。只所以说它简单,是因为当你只是创建简单的注册页面时,将它拖到页面上设置一下样式就可以使用了。要说它复杂呢,是因为它的灵活性太强了,你可以自定义模板,加入自己的一些用户个性化信息。 ChangePassword控件:

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

PasswordRecovery控件:

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

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

在Web.Config中设置:

<system.net>

<mailSettings>

<smtp from="grayworm@tom.com">

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

</smtp>

</mailSettings>

</system.net>

或者:

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

----------------------------------------

Login控件的事件:

Login 控件可以使用 Web.config 文件中的设置来自动管理成员资格验证。不过,如果应用程序要求您自定义控件的工作方式,或者您要了解 Login 控件事件与页生命周期的关联方式,可以使用下表中列出的事件。

控件事件 典型使用
LoggingIn
在回发期间,当页的 LoadComplete 事件发生后就会引发该事件。它标记登录过程的起点。

对必须在验证过程开始前发生的任务使用该事件。

Authenticate
该事件在 LoggingIn 事件之后引发。

使用该事件来重写或增强 Login 控件的默认验证行为。

LoggedIn
该事件在验证用户名和密码后引发。

使用该事件来重定向到另一个页或动态设置控件中的文本。如果出现错误或验证失败,就不会发生该事件。

LoginError
如果验证失败,将引发该事件。

使用该事件来设置控件中的问题解释文本或将用户定向到不同的页。

-----------------------------

保存用户的登录状态:登陆成功后把用户名写入cookies
FormsAuthentication.SetAuthCookie(userName, false);

在其它网页使用User.Identity.Name获取用户的名称;

http://blog.sina.com.cn/s/blog_573be9bc0100gp6m.html

asp.net Login控件基本属性及事件说明相关推荐

  1. login控件authenticate_asp.net Login控件基本属性及事件说明

    当前位置: IT大杂烩 > JavaScript > asp.net Login控件基本属性及事件说明 asp.net Login控件基本属性及事件说明 www.someabcd.com  ...

  2. login控件authenticate_Login.Authenticate 事件 (System.Web.UI.WebControls) | Microsoft Docs

    验证用户的身份后出现.Occurs when a user is authenticated. public: event System::Web::UI::WebControls::Authenti ...

  3. asp.net panel 加html,ASP.NET 页面中动态增加的控件、添加事件

    要求:页面上有一个Add按钮,每点击一次该按钮,页面上动态创建一个WebPartZone! 提醒:WebPartZone只能在OnInit或之前才能创建,否则报异常! 大家都知道,按钮的点击事件是在R ...

  4. login控件authenticate_关于asp:login控件和验证码的问题?(转)

    1.验证码页面添加.2.将这验证码页面添加到login控件中:拖曳一Login控件,将之切换到模式下,在Html源文件中在表格中密码那行后添加: 验证码:其中ImageUrl="~/publ ...

  5. ASP.Net TextBox控件只允许输入数字

    原文:ASP.Net TextBox控件只允许输入数字 1.1.在Asp.Net TextBox 控件的 OnKeyPress 事件中指定输入键盘码必须为数字: <asp:TextBox ID= ...

  6. login控件authenticate_ASP:Login控件(登录控件)

    Login控件是一个复合控件,它有效集成了登录验证页面中常见的用户界面元素和功能.通常情况下,Login控件会在页面中呈现3个核心元素,即用于输入用户名的文本框.用于输入密码的文本框和用于提交用户凭证 ...

  7. ASP.NET 用户控件自定义属性、方法、事件

    原文件链接:http://www.cnblogs.com/stalwart/archive/2010/12/16/1908302.html 之前一直写MVC的,本来就不大喜欢.NET中的服务器控件,里 ...

  8. [习题]如何触发 GridView 身体里面的「子控件」的事件 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充)...

    [习题]如何触发 GridView 身体里面的「子控件」的事件?#1 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充) 這個範例是要補充書本「上集」(ASP.NET專題實務) ...

  9. 有效利用ASP.NET用户控件的事件委托

    当你在开发ASP.NET网站,对用户控件一定并不陌生.当多个页面都使用相同或相似的设计时,使用用户控件可以提高开发效率! 但往往你会因为用户控件有少许不同的要求而感觉到烦恼.比如说在开发后台处理页面的 ...

最新文章

  1. 职场减压妙计:主动降职
  2. Linux CentOS6.7设置为固定静态IP的方法
  3. cordova监听事件中调用其他方法_Laravel模型事件的实现原理详解
  4. 数学系鄙视物理系的经典桥段,全部看懂了算我输!
  5. mysql8 设置了默认值 CURRENT_TIMESTAMP 依然报null问题
  6. pyqt5使用本地摄像头
  7. EOS开发“ Hello world !”
  8. 山东省计算机二级c语言题,2012计算机二级C语言题库.doc
  9. 【系统设计】详细设计说明书
  10. 2022张宇考研基础30讲 第六讲 中值定理
  11. med4way:中介效应和交互效应分析
  12. android ipv6测试,搭建IPv6本地环境测试App
  13. matlab y 0,用MATLAB算y-2y-3y=0的解
  14. vim 替换文本指令
  15. MECE的五中分类法则
  16. TrueLicense实现产品License验证
  17. bootstrap checks failed [1]: the default discovery settings are unsuitable for production use; at l
  18. 详解Unity的移动控制实现
  19. HBuilder X 下载安装内置浏览器失败
  20. winform响应时间最长是多少分钟_漫威电影女性角色出场统计:谁出场时间最长?谁出场次数最多?...

热门文章

  1. 和我一起学 Selenium WebDriver
  2. oracle sql developer 查看游标结果集(3.0.04
  3. spring 同时配置hibernate and jdbc 事务
  4. # # # 正则
  5. mysql 数据表操作 存储引擎介绍
  6. bzoj千题计划153:bzoj2431: [HAOI2009]逆序对数列
  7. 技术资料,老吴的博客 很好的 技术博客 里面有很多资料 书籍或者软件安装包...
  8. ubuntu12.04.5安装openssh-server所引发的血案
  9. 《JAVA与模式》之合成模式
  10. C#测试数据库连接是否成功