Пример #1
0
        public void Submit()
        {
            if (IsAjax)
            {
                if (IsPost)
                {
                    if (!IsWap)
                    {
                        if (PassportSection.GetSection().LoginWithCaptcha)
                        {
                            if (!Captcha.CheckCaptcha("login", Request.Form["Captcha"]))
                            {
                                SetResult((int)M.LoginStatus.CaptchaError);
                                return;
                            }
                        }
                    }
                    int           errCount;
                    M.Member      member;
                    string        name   = Request.Form["UserName"];
                    string        pwd    = Request.Form["Password"];
                    M.LoginStatus status = M.Member.Login(DataSource, name, pwd, ClientIp, out errCount, out member);
                    if (status == M.LoginStatus.Success)
                    {
                        Web.PassportAuthentication.SetAuthCookie(true, false, member);
                        OnLogined(member.Id);

                        HttpCookie loginCookie = new HttpCookie("UserName");
                        string     check       = Request.Form["remember"];
                        if (check == "true")
                        {
                            loginCookie.Values.Add("UName", name);
                            loginCookie.Expires = DateTime.Now.AddYears(1);
                            Response.SetCookie(loginCookie);
                        }
                        else
                        {
                            loginCookie.Values.Add("UName", "");
                            loginCookie.Expires = DateTime.Now.AddYears(1);
                            Response.SetCookie(loginCookie);
                        }
                    }
                    SetResult((int)status, errCount);
                }
                else
                {
                    NotFound();
                }
            }
            else
            {
                NotFound();
            }
        }
Пример #2
0
        public void Cb(string type)
        {
            string target = Request.QueryString["target"];

            if (string.IsNullOrEmpty(target))
            {
                target = GetUrl("/");
            }
            OAuth2Provider provider = GetProvider(type);

            if (provider != null)
            {
                OAuth2TokenAccess token = provider.Access() as OAuth2TokenAccess;
                M.OAuth2Member    user  = provider.GetUserInfo(token);
                if (!string.IsNullOrEmpty(user.UserId))
                {
                    M.Member      member;
                    M.LoginStatus status = M.OAuth2Member.Login(DataSource, type.ToLower(), user.UserId, ClientIp, out member);
                    if (status == M.LoginStatus.Success)
                    {
                        PassportAuthentication.SetAuthCookie(true, false, member);
                        OnLogined(member.Id);
                        Refresh(target);
                    }
                    else
                    {
                        if (status == M.LoginStatus.NeedBind)
                        {
                            this["Oauth2Type"]   = user.Type;
                            this["Oauth2UserId"] = user.UserId;
                            this["Target"]       = target;
                            this["Sms"]          = SMSCaptchaSection.GetSection();
                            Render("oauth2.html");
                        }
                        else
                        {
                            Redirect(GetUrl("/login"));
                        }
                    }
                }
                else
                {
                    Redirect(GetUrl("/login"));
                }
            }
            else
            {
                Redirect(GetUrl("/login"));
            }
        }
Пример #3
0
 public void Bind()
 {
     try
     {
         //string target = Request.Form["Target"];
         //if (string.IsNullOrEmpty(target))
         //    target = GetUrl("/");
         string         type   = Request.Form["Oauth2Type"];
         string         userId = Request.Form["Oauth2UserId"];
         M.RegisterType rt     = (M.RegisterType) int.Parse(Request.Form["RegisterType"]);
         M.Member       member = DbTable.Load <M.Member>(Request.Form);
         if (rt == M.RegisterType.Mobile)
         {
             if (!V.MobileHash.Equals(DataSource, member.Mobile, V.MobileHash.Register, Request.Form["Captcha"]))
             {
                 SetResult((int)M.LoginStatus.CaptchaError);
                 return;
             }
             member.VerMob = true;
         }
         string password = member.Password;
         member.ParentId     = Utility.GetReference(this, DataSource);
         member.Approved     = true;
         member.CreationDate = DateTime.Now;
         DataStatus status = M.OAuth2Member.Register(DataSource, type, userId, member, rt);
         if (status == DataStatus.Success)
         {
             M.LoginStatus state = M.OAuth2Member.Login(DataSource, type, userId, ClientIp, out member);
             if (state == M.LoginStatus.Success)
             {
                 PassportAuthentication.SetAuthCookie(true, false, member);
                 OnLogined(member.Id);
                 SetResult(true);
             }
             else
             {
                 SetResult((int)state);
             }
         }
         else
         {
             SetResult((int)status);
         }
     }
     catch (Exception)
     {
         SetResult(false);
     }
 }
Пример #4
0
        public void Submit()
        {
            try
            {
                M.RegisterType  type    = (M.RegisterType) int.Parse(Request.Form["RegisterType"]);
                PassportSection section = PassportSection.GetSection();
                M.Member        member  = DbTable.Load <M.Member>(Request.Form);
                if (type == M.RegisterType.Mobile)
                {
                    if (section.VerifyMobile)
                    {
                        if (!V.MobileHash.Equals(DataSource, member.Mobile, V.MobileHash.Register, Request.Form["SmsCaptcha"]))
                        {
                            SetResult((int)M.LoginStatus.SmsCaptchaError);
                            return;
                        }
                        member.VerMob = true;
                    }
                }
                if (!IsWap)
                {
                    if (section.RegisterWithCaptcha)
                    {
                        if (!Captcha.CheckCaptcha(Request.Form["CaptchaName"], Request.Form["Captcha"]))
                        {
                            SetResult((int)M.LoginStatus.CaptchaError);
                            return;
                        }
                    }
                }
                string password = member.Password;
                if (member.ParentId == 0)
                {
                    bool convertResult = long.TryParse(Request.QueryString["ParentId"], out member.ParentId);
                    if (!convertResult)
                    {
                        member.ParentId = Utility.GetReference(this, DataSource);
                    }
                }
                member.Approved     = section.DefaultApproved;
                member.CreationDate = DateTime.Now;
                DataStatus status = member.Insert(DataSource);
                if (status == DataStatus.Success)
                {
                    int    errCount;
                    string name;
                    switch (type)
                    {
                    case M.RegisterType.Email: name = member.Email; break;

                    case M.RegisterType.Mobile: name = member.Mobile.ToString(); break;

                    default: name = member.Name; break;
                    }
                    M.LoginStatus state = M.Member.Login(DataSource, name, password, ClientIp, out errCount, out member);
                    if (state == M.LoginStatus.Success)
                    {
                        Web.PassportAuthentication.SetAuthCookie(true, false, member);
                    }
                    SetResult((int)state);
                }
                else
                {
                    SetResult((int)status);
                }
            }
            catch (Exception)
            {
                SetResult(false);
            }
        }