📄 dnnlitemembershipprovider.cs
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Castle.ActiveRecord;
/// <summary>
///DNNLiteMemberShipProvider 成员提供程序
/// </summary>
public class DNNLiteMemberShipProvider: ActiveRecordMemberShipProvider //SqlMembershipProvider
{
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
return CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status,new DNNLiteUserInfo());
}
public MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status,
DNNLiteUserInfo info )
{
MembershipUser user= base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
if (status == MembershipCreateStatus.Success)
{
if (info == null)
info = new DNNLiteUserInfo();
info.UserKey = (Guid)user.ProviderUserKey;
info.UserName = user.UserName;
info.Save();
return GetUser( user.ProviderUserKey , false);
}
else
{
return user;
}
}
public override MembershipUser GetUser(string username, bool userIsOnline)
{
MembershipUser u = base.GetUser(username, userIsOnline);
if (u == null)
{
return null;
}
DNNLiteUserInfo info = DNNLiteUserInfo.Find((Guid)u.ProviderUserKey);
DNNLiteMemberShipUser user =
new DNNLiteMemberShipUser(u.ProviderName, u.UserName, u.ProviderUserKey,
u.Email, u.PasswordQuestion, u.Comment, u.IsApproved,
u.IsLockedOut, u.CreationDate, u.LastLoginDate,
u.LastActivityDate, u.LastPasswordChangedDate,
u.LastLockoutDate, info);
return user;
}
public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
{
MembershipUser u= base.GetUser(providerUserKey, userIsOnline);
if (u == null)
{
return null;
}
DNNLiteUserInfo info = DNNLiteUserInfo.Find((Guid)providerUserKey);
DNNLiteMemberShipUser user =
new DNNLiteMemberShipUser(u.ProviderName, u.UserName, u.ProviderUserKey,
u.Email, u.PasswordQuestion, u.Comment, u.IsApproved,
u.IsLockedOut, u.CreationDate, u.LastLoginDate,
u.LastActivityDate, u.LastPasswordChangedDate,
u.LastLockoutDate, info);
return user;
}
public override void UpdateUser(MembershipUser user)
{
base.UpdateUser(user);
DNNLiteMemberShipUser u = user as DNNLiteMemberShipUser;
if (u != null && u.Information != null )
{
u.Information.UserKey = (Guid)user.ProviderUserKey;
u.Information.UserName = user.UserName;
u.Information.Save();
}
}
public override string GeneratePassword()
{
if (SpecifyPassword != null)
{
return SpecifyPassword.Invoke();
}
return base.GeneratePassword();
}
/// <summary>
/// 委托,返回指定密码值
/// </summary>
/// <returns></returns>
public delegate string dgeSpecifyPassword();
/// <summary>
/// 委托实例,如果这个委托不为空,那么当执行
/// GeneratePassword时,返回这个委托指定的值
/// </summary>
public dgeSpecifyPassword SpecifyPassword = null;
}
/// <summary>
/// DNNLite成员
/// </summary>
public class DNNLiteMemberShipUser:MembershipUser
{
private DNNLiteUserInfo _information;
/// <summary>
/// 用户信息
/// </summary>
public DNNLiteUserInfo Information
{
get { return _information; }
set { _information = value; }
}
public DNNLiteMemberShipUser(string providername,
string username,
object providerUserKey,
string email,
string passwordQuestion,
string comment,
bool isApproved,
bool isLockedOut,
DateTime creationDate,
DateTime lastLoginDate,
DateTime lastActivityDate,
DateTime lastPasswordChangedDate,
DateTime lastLockedOutDate,
DNNLiteUserInfo info) :
base(providername,
username,
providerUserKey,
email,
passwordQuestion,
comment,
isApproved,
isLockedOut,
creationDate,
lastLoginDate,
lastActivityDate,
lastPasswordChangedDate,
lastLockedOutDate)
{
_information = info;
}
}
/// <summary>
/// 扩充的MemberShipUser属性,
/// 通过DNNLiteMemberShipUser的Information属性公开
/// </summary>
[ActiveRecord()]
public class DNNLiteUserInfo: ActiveRecordBase< DNNLiteUserInfo >
{
private int _id;
/// <summary>
/// 主键
/// </summary>
[PrimaryKey(PrimaryKeyType.Native)]
public int Id { get { return _id; } set { _id = value; } }
private Guid _userkey ;
/// <summary>
/// userkey guid类型,主键
/// </summary>
[ Property( )]
public Guid UserKey { get { return _userkey; } set { _userkey=value ;} }
private string _username = string.Empty;
/// <summary>
/// 用户名
/// </summary>
[Property()]
public string UserName { get { return _username; } set { _username=value ;} }
private string _phone=string.Empty ;
/// <summary>
/// 联系电话
/// </summary>
[Property()]
public string Phone
{
get { return _phone; }
set { _phone = value; }
}
private string _realname=string.Empty ;
/// <summary>
/// 姓名
/// </summary>
[Property()]
public string RealName { get { return _realname; } set {_realname=value ;} }
private int _logincount;
/// <summary>
/// 登录次数
/// </summary>
[Property()]
public int LoginCount { get { return _logincount; } set { _logincount = value ;} }
public static new DNNLiteUserInfo Find(Guid userkey)
{
return DNNLiteUserInfo.FindFirst( new NHibernate.Expression.EqExpression("UserKey",userkey ) );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -