现在的位置: 首页 > 综合 > 正文

ASP.Net 2 入门(一)――用户登录和注销

2013年07月13日 ⁄ 综合 ⁄ 共 6074字 ⁄ 字号 评论关闭

ASP.Net 2中的登录组件

  1. 实现自己的Membership Provider(继承自MembershipProvider类)
    1. MembershipProvider类(详细内容见MSDN中关于MembershipProvider类的说明)

受保护的构造函数

 

名称

说明

MembershipProvider

初始化 MembershipProvider 类的新实例。

公共属性

 

名称

说明

ApplicationName

使用自定义成员资格提供程序的应用程序的名称。

Description 

获取一条简短的易懂描述,它适合在管理工具或其他用户界面 (UI) 中显示。(从 ProviderBase 继承。)

EnablePasswordReset

指示成员资格提供程序是否配置为允许用户重置其密码。

EnablePasswordRetrieval

指示成员资格提供程序是否配置为允许用户检索其密码。

MaxInvalidPasswordAttempts

获取锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数。

MinRequiredNonAlphanumericCharacters

获取有效密码中必须包含的最少特殊字符数。

MinRequiredPasswordLength

获取密码所要求的最小长度。

Name 

获得一个友好名称,用于在配置过程中引用提供程序。(从 ProviderBase 继承。)

PasswordAttemptWindow

获取在锁定成员资格用户之前允许的最大无效密码或无效密码提示问题答案尝试次数的分钟数。

PasswordFormat

获取一个值,该值指示在成员资格数据存储区中存储密码的格式。

PasswordStrengthRegularExpression

获取用于计算密码的正则表达式。

RequiresQuestionAndAnswer

获取一个值,该值指示成员资格提供程序是否配置为要求用户在进行密码重置和检索时回答密码提示问题。

RequiresUniqueEmail

获取一个值,指示成员资格提供程序是否配置为要求每个用户名具有唯一的电子邮件地址。

公共方法 (请参见 受保护的方法

 

名称

说明

ChangePassword

处理更新成员资格用户密码的请求。

ChangePasswordQuestionAndAnswer

处理更新成员资格用户的密码提示问题和答案的请求。

CreateUser

将新的成员资格用户添加到数据源。

DeleteUser

从成员资格数据源删除一个用户。

Equals 

已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)

FindUsersByEmail

获取一个成员资格用户的集合,这些用户的电子邮件地址包含要匹配的指定电子邮件地址。

FindUsersByName

获取一个成员资格用户的集合,这些用户的用户名包含要匹配的指定用户名。

GetAllUsers

获取数据源中的所有用户的集合,并显示在数据页中。

GetHashCode 

用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。)

GetNumberOfUsersOnline

获取当前访问该应用程序的用户数。

GetPassword

从数据源获取指定用户名所对应的密码。

GetType 

获取当前实例的 Type。 (从 Object 继承。)

GetUser

已重载。 从数据源获取成员资格用户的信息。

GetUserNameByEmail

获取与指定的电子邮件地址关联的用户名。

Initialize 

初始化提供程序。 (从 ProviderBase 继承。)

ReferenceEquals 

确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)

ResetPassword

将用户密码重置为一个自动生成的新密码。

ToString 

返回表示当前 Object 的 String。 (从 Object 继承。)

UnlockUser

清除锁定,以便可以验证该成员资格用户。

UpdateUser

更新数据源中有关用户的信息。

ValidateUser

验证数据源中是否存在指定的用户名和密码。

受保护的方法

 

名称

说明

DecryptPassword

解密已加密的密码。

EncryptPassword

对密码进行加密。

Finalize 

允许 Object 在"垃圾回收"回收 Object 之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)

MemberwiseClone 

创建当前 Object 的浅表副本。 (从 Object 继承。)

OnValidatingPassword

如果定义了事件处理程序,则引发 ValidatingPassword 事件。

公共事件

 

名称

说明

ValidatingPassword

在创建用户、更改密码或重置密码时发生。

  1. 实现自己的SimpleMembershipProvider类

/// <summary>

/// SimpleMembershipProvider 的摘要说明

/// </summary>

public class SimpleMembershipProvider : MembershipProvider

{

public SimpleMembershipProvider()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

 

public override string ApplicationName

{

get

{

return ("SimpleMembershipProvider Application");

}

set

{

}

}

 

public override bool ChangePassword(string username, string oldPassword, string newPassword)

{

return (true);

//throw new Exception("The method or operation is not implemented.");

}

 

public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)

{

return (true);

//throw new Exception("The method or operation is not implemented.");

}

 

public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)

{

status = MembershipCreateStatus.Success;

return (null);

//throw new Exception("The method or operation is not implemented.");

}

 

public override bool DeleteUser(string username, bool deleteAllRelatedData)

{

return (true);

//throw new Exception("The method or operation is not implemented.");

}

 

public override bool EnablePasswordReset

{

get { return (true); }

}

 

public override bool EnablePasswordRetrieval

{

get { return (true); }

}

 

public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)

{

totalRecords = 0;

return (null);

//throw new Exception("The method or operation is not implemented.");

}

 

public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)

{

totalRecords = 0;

return (null);

//throw new Exception("The method or operation is not implemented.");

}

 

public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)

{

totalRecords = 0;

return (null);

//throw new Exception("The method or operation is not implemented.");

}

 

public override int GetNumberOfUsersOnline()

{

return (1);

//throw new Exception("The method or operation is not implemented.");

}

 

public override string GetPassword(string username, string answer)

{

return (string.Empty);

//throw new Exception("The method or operation is not implemented.");

}

 

public override MembershipUser GetUser(string username, bool userIsOnline)

{

return (null);

//throw new Exception("The method or operation is not implemented.");

}

 

public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)

{

return (null);

//throw new Exception("The method or operation is not implemented.");

}

 

public override string GetUserNameByEmail(string email)

{

return (string.Empty);

//throw new Exception("The method or operation is not implemented.");

}

 

public override int MaxInvalidPasswordAttempts

{

get { return (7); }

}

 

public override int MinRequiredNonAlphanumericCharacters

{

get { return (1); }

}

 

public override int MinRequiredPasswordLength

{

get { return (1); }

}

 

public override int PasswordAttemptWindow

{

get { return (1); }

}

 

public override MembershipPasswordFormat PasswordFormat

{

get { return (MembershipPasswordFormat.Clear); }

}

 

public override string PasswordStrengthRegularExpression

{

get { return (string.Empty); }

}

 

public override bool RequiresQuestionAndAnswer

{

get { return (true); }

}

 

public override bool RequiresUniqueEmail

{

get { return (true); }

}

 

public override string ResetPassword(string username, string answer)

{

return (string.Empty);

//throw new Exception("The method or operation is not implemented.");

}

 

public override bool UnlockUser(string userName)

{

return (false);

//throw new Exception("The method or operation is not implemented.");

}

 

public override void UpdateUser(MembershipUser user)

{

//throw new Exception("The method or operation is not implemented.");

}

 

public override bool ValidateUser(string username, string password)

{

if (username.ToLower() == "gavinlv")

{

if (password == "GavinLv")

{

return (true);

}

}

return (false);

}

}

这里仅仅为了实验用,所以仅简单的实现了ValidateUser(string, string) : bool方法,这个方法用来验证用户名和密码是否正确,并返回验证结果(True|False)。

  1. 创建一个新的Web项目
    1. 在Default.aspx上放一个LoginStatus控件(System.Web.UI.WebControls.LoginStatus),并命名为loginStatus。这个控件将根据当前账号登录的状态的不同而自动显示不同的状态,账号已登录后为"注销",账号登录前为"登录"。
    2. 在Default.aspx上放一个LoginName控件(System.Web.UI.WebControls.LoginName),并命名为loginName。这个控件将显示当前登录的账号名。
    3. 新建一个Web窗体:Login.aspx
    4. 在Login.aspx上放一个Login控件(System.Web.UI.WebControls.Login),并命名为login
    5. 在属性窗口中设置login控件的DestinationPageUrl设置为Default.aspx
  2. 配置Web.config文件
    1. 如果项目中没有web.config文件,那就添加一

抱歉!评论已关闭.