public ActionResult SendMail([Bind(Include = "sender, receiver, MailTitle, MailBody")] MailViewModel mailVM)
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("", "如果您的信箱輸入正確,已經發送驗證信至您信箱");  //安全問題就算錯也報這樣的提示
                return(RedirectToAction("FinishedSending", "ForgotPassword"));
            }

            MemberViewModel currentMember = _api.GetMember(p => p.MemberRegEmail == mailVM.receiver);


            if (currentMember == null)
            {
                ModelState.AddModelError("", "如果您的信箱輸入正確,已經發送驗證信至您信箱"); //安全問題就算錯也報這樣的提示
                return(RedirectToAction("FinishedSending", "ForgotPassword"));
            }

            var outputCode = CreatePasswordResetHmacCode(currentMember.MemberId);


            var link = Request.Url.Scheme + "://"
                       + Request.Url.Authority
                       + @Url.Action("CheckMemberUrl", "ForgotPassword", new { forgotpw = outputCode });



            //取Email template
            string returnData = getEmailData();

            //把該帶的資料塞進 template
            string finalReturnData = setReplacedEmailData(returnData, link, currentMember.MemberName);

            var msg = new MailMessage("*****@*****.**",
                                      currentMember.MemberRegEmail, "集資車車 - 找回密碼",
                                      finalReturnData);

            msg.IsBodyHtml = true;


            //mailVM.receiver = currentMember.MemberRegEmail;
            //mailVM.sender = "*****@*****.**";
            //mailVM.MailTitle = "集資車車 - 找回密碼";
            //mailVM.MailBody = link;



            string id       = WebConfigurationManager.AppSettings["GmailId"];
            string password = WebConfigurationManager.AppSettings["GmailPassword"];
            var    client   = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential(id, password),
                EnableSsl   = true,
            };

            //client.Send(mailVM.sender, mailVM.receiver, mailVM.MailTitle, mailVM.MailBody);
            client.Send(msg);
            return(RedirectToAction("FinishedSending", "ForgotPassword"));
        }
示例#2
0
        public ActionResult Login(MemberViewModel input)
        {
            //if (!ModelState.IsValid)
            //{
            //    return RedirectToAction("LoginFail", "Member");
            //}

            //先抓出email
            MemberViewModel memberinfo = _api.GetMember(x => x.MemberRegEmail == input.MemberRegEmail);

            if (memberinfo == null)
            {
                return(RedirectToAction("LoginFail", "Member"));
            }
            //如果是假資料
            else if (memberinfo.MemberId <= 17)
            {
                Session["Permission"] = memberinfo.Permission;
                Session["Member"]     = memberinfo;
            }
            else
            {
                //確認 hashcode
                bool verify = _memberservice.VerifyPasswordWithHash(input);
                if (verify == false)
                {
                    ModelState.AddModelError("NotFound", "帳號或密碼輸入錯誤");
                    return(RedirectToAction("LoginFail", "Member"));
                }
                Session["Permission"] = memberinfo.Permission;
                Session["Member"]     = memberinfo;
            }
            //1.Create FormsAuthenticationTicket
            var ticket = new FormsAuthenticationTicket(
                version: 1,
                name: "",                                   //可以放使用者Id
                issueDate: DateTime.UtcNow,                 //現在UTC時間
                expiration: DateTime.UtcNow.AddMinutes(30), //Cookie有效時間=現在時間往後+30分鐘
                isPersistent: false,                        // 是否要記住我 true or false
                userData: "",                               //可以放使用者角色名稱
                cookiePath: FormsAuthentication.FormsCookiePath);

            //2.Encrypt the Ticket
            var encryptedTicket = FormsAuthentication.Encrypt(ticket);

            //3.Create the cookie.
            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

            Response.Cookies.Add(cookie);

            //4.Redirect back to original URL.
            var url = FormsAuthentication.GetRedirectUrl("", false);

            //5.Response.Redirect
            return(Redirect(url));
        }