⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dnnlitemembershipprovider.cs

📁 如果不使用IIS,请先运行 XSP.exe,待提示已侦听 8080端口后
💻 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 + -