在ASP.NET Membership Cookie中存储自定义数据,可以通过以下步骤实现:
- 创建自定义MembershipUser类,继承自MembershipUser类,并添加自定义属性:public class CustomMembershipUser : MembershipUser
{
public string CustomData { get; set; }
public CustomMembershipUser(string providerName, string name, object providerUserKey, string email, string passwordQuestion, string comment, bool isApproved, bool isLockedOut, DateTime creationDate, DateTime lastLoginDate, DateTime lastActivityDate, DateTime lastPasswordChangedDate, DateTime lastLockoutDate)
: base(providerName, name, providerUserKey, email, passwordQuestion, comment, isApproved, isLockedOut, creationDate, lastLoginDate, lastActivityDate, lastPasswordChangedDate, lastLockoutDate)
{
}
}public class CustomMembershipProvider : SqlMembershipProvider
{
public override MembershipUser GetUser(string username, bool userIsOnline)
{
var user = base.GetUser(username, userIsOnline);
var customUser = user as CustomMembershipUser;
if (customUser != null)
{
// 从数据库或其他地方获取自定义数据,并设置到CustomData属性中
customUser.CustomData = "Custom data for " + username;
}
return customUser;
}
public override bool ValidateUser(string username, string password)
{
// 验证用户名和密码
// ...
// 如果验证成功,将自定义数据存储到MembershipUser中
var user = (CustomMembershipUser)GetUser(username, true);
user.CustomData = "Custom data for " + username;
return true;
}
}<membership defaultProvider="CustomMembershipProvider">
<providers>
<clear />
<add name="CustomMembershipProvider" type="CustomMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>var user = (CustomMembershipUser)Membership.GetUser();
user.CustomData = "Custom data for " + user.UserName;var user = (CustomMembershipUser)Membership.GetUser();
var customData = user.CustomData;通过以上步骤,可以在ASP.NET Membership Cookie中存储自定义数据。
- 创建自定义MembershipProvider类,继承自SqlMembershipProvider类,并重写ValidateUser、GetUser等方法,使用自定义MembershipUser类:
- 在web.config中配置自定义MembershipProvider:
- 在需要存储自定义数据的地方,将自定义数据添加到MembershipUser中:
- 在需要读取自定义数据的地方,从MembershipUser中获取自定义数据: