Asp.Net Forums與現有系統整合方案樣本

來源:互聯網
上載者:User

        Asp.Net Forums以下簡稱ANF,版本2.0,本文係數流水帳,只是記錄了一下今的工作,沒啥技術含量。

        已有系統已經有自己的一套使用者系統,需要掛接ANF,要求在已有系統使用者註冊,登入,修改密碼時,在ANF中也做出相應反映。不要求ANF的使用者變化影響已有系統,只是單向同步。

        在盡量少動已有代碼的情況下找一種簡單的方式來完成整合。之前看了寶玉的CnForums和已有系統的整合方案,最後偷懶決定在已有系統上述動作結束後將使用者相關資訊和操作類型附加在url後面傳給一個建立頁來處理在ANF中執行相關操作。

        這建立頁暫且叫bridge.aspx 當然要建在ANF的項目中該using的都using了,負責接收使用者名稱密碼等資訊然後執行相應的ANF操作。

  • 註冊
    註冊很簡單,我的Username和Password是自己封裝的屬性,從Request中擷取資訊,我們系統沒有Email就隨便添一個,接下來要給AccountStatus設定為通過,IsAnonymous關掉。Users.Create中那個bool參數代表是否給使用者發送註冊成功提示的郵件,我沒郵件當然關掉。
    注意我在所有的地方都catch吸收掉錯誤,而無返回,你不一定要這麼做。
        public void Register()
        {
            try
            {
                User user = new User();
                user.Username = Username;    
                user.Password = Password;
                user.Email = "Anonymous@Anonymous.com";
                user.AccountStatus = UserAccountStatus.Approved;
                user.IsAnonymous = false;

                Users.Create(user, false);
            }
            catch
            {
                
            }
        }
  • 登入
    基本上都是複製粘貼過來的,注意最後的setcookie,這是同步登入的關鍵。
        public void Login()
        {
            try
            {
                User userToLogin = new User();
                userToLogin.Username = Username;
                userToLogin.Password = Password;

                LoginUserStatus loginStatus = Users.ValidUser(userToLogin);

                if (loginStatus == LoginUserStatus.Success)
                {
                    if (!Globals.GetSiteSettings().AllowLogin)
                    {
                        bool allowed = false;

                        int userid = Users.FindUserByUsername(userToLogin.Username).UserID;
                        ArrayList roles = Roles.GetRoles(userid);

                        foreach (Role role in roles)
                        {
                            if (role.Name == "Site Administrators" || role.Name == "Global Administrators")
                            {
                                allowed = true;
                                break;
                            }
                        }
                        if (!allowed)
                        {
                            return;
                        }
                    }

                    set_Cookie(userToLogin.Username, "1");
                }
            }
            catch
            {
            }
        }
  • 修改密碼
    這個假設是基於登入已經發生的,如果你的假設不是這樣需要加入自己的判斷。
        public void ChangePassword()
        {
            try
            {
                ForumContext forumContext = ForumContext.Current;
                User user = forumContext.User;
                if (user != null)
                {
                    user.ChangePassword(Password, NewPassword);
                }
            }
            catch
            {
                
            }
        }
  • 設定cookie
public void set_Cookie(string Username, string Selet_item)
        {
            if(Selet_item == "0")
            {
                FormsAuthentication.SetAuthCookie(Username,false);
            }
            else
            {
                ForumContext forumContext = ForumContext.Current;
                FormsAuthentication.SetAuthCookie(Username,true);
                forumContext.Context.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(System.Convert.ToInt32(Selet_item));
            }
        }

        最後在已有系統的註冊,登入,修改的最後Response.Redirect這頁就ok,不喜歡Redirect,Server.Transfer,xmlhttp都行,看你需要的展現了。還有一點很關鍵,就是要加密了你傳輸的字串,要不明文就……※¥※×%※× ,要是嫌還不安全就用ip判斷一下誰可以訪問這頁!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.