1. 程式人生 > >C#序列化實現使用者登入記住賬號密碼功能

C#序列化實現使用者登入記住賬號密碼功能

簡單的實現使用者登入記住賬號密碼功能

使用者類:

    /// <summary>
    /// 使用者
    /// </summary>
    [Serializable]
    public class User : BaseEntity
    {
        public int Id { get; set; }

        /// <summary>
        /// 使用者名稱
        /// </summary>
        [Display(Name = "使用者名稱")]
        [StringLength(32)]
        public string Name { get; set; }

        /// <summary>
        /// 性別
        /// </summary>
        [Display(Name = "性別")]
        [StringLength(32)]
        public string Gender { get; set; }

        /// <summary>
        /// 使用者分組
        /// </summary>
        [Display(Name = "使用者分組")]
        [StringLength(32)]
        public string Group { get; set; }

        /// <summary>
        /// 角色
        /// </summary>
        [Display(Name = "角色")]
        [StringLength(32)]
        public string Role { get; set; }

        /// <summary>
        /// 密碼
        /// </summary>
        [Display(Name = "密碼")]
        [StringLength(255)]
        public string Password { get; set; }

        /// <summary>
        /// 登入時間
        /// </summary>
        [Display(Name = "登入時間")]
        public DateTime? LoginDateTime { get; set; }
    }

序列化,所謂序列化就是把實體物件儲存到儲存媒介中,以便於再次啟動程式時可以讀取到儲存的資訊。我們利用這個特點,實現使用者賬號和密碼記住功能。

首先對使用者類物件進行序列化:在使用者登入成功時,儲存使用者的資訊到本地。

                    Stream s = File.Open("user.dat", FileMode.OpenOrCreate);
                    BinaryFormatter binaryFormatter = new BinaryFormatter();

                    binaryFormatter.Serialize(s, user);
                    s.Close();

這樣就把User類的例項儲存到檔案user.dat中,以便在使用者再次開啟程式時,自動輸入賬號和密碼資訊。

當用戶再次進入登入介面時,我們對user.dat中儲存的使用者資訊序列化,也就是把儲存的資訊還原為一個User物件,然後我們就可以使用讀取到的資訊填充登入介面的使用者名稱和密碼,實現記住賬號和密碼功能。

讀取資訊程式碼如下:

            if (!File.Exists("user.dat"))
            {
                return;
            }

            Stream fs = File.Open("user.dat", FileMode.Open);
            if (fs == null || fs.Length == 0)
            {
                return;
            }

            BinaryFormatter bf = new BinaryFormatter();

            object o = bf.Deserialize(fs);

            if (o is User user)
            {
                UserNameTextBox.Text = user.Name;
                PasswordTextBox.Text = user.Password;
                rememberPasswordCheckBox.Checked = true;
            }

            fs.Close();
以上就簡單的實現了使用者登入記住密碼的功能。