آموزش ارسال لینک فعال سازی در Asp.Net MVC 5
آموزش ارسال لینک فعال سازی در Asp.Net MVC 5
در این پست قصد داریم تا نحوه ارسال لینک فعال سازی در MVC به صورت کاربردی توضیح دهیم.
برای این کاربر هنگام ثبت نام در سایت ایمیل معتبری وارد کند و همجنین بتوان خبرنامه سایت را به کاربر ارسال کنیم از لینک فعال سازی استفاده می کنیم.
برای این کار ابتدا به کنترل Account بروید و سپس اکشن Register قسمت Post آن را به صورت زیر تغییر دهید
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { // بعد از ثبت نام کاربر رو لاگین نمی کنیم //await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); // یک توکن ایجاد می کنیم string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // مشخص کردن صفحه فعال سازی ایمیل var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); ConfigurationEmail.SendEmailWithInfokarkoo(user.Email, "لینک تایید ثبت نام", "لطفا با کلیک روی لینک زیر، ثبت نام خود را تایید نمایید", callbackUrl); } } // If we got this far, something failed, redisplay form return View(model); }
اولین این که بعد از ثبت کاربر، کاربر را لاگین نمی کنیم و یک توکن برای کاربر ایجاد می کنیم.
و در نهایت صفحه فعال سازی حساب کاربری را مشخص می کنیم.
در پست های قبلی نحوه ارسال ایمیل در MVC را آموزش دادیم در صورتی که با ارسال ایمیل در MVC آشنا نیستید به این آموزش را ببینید.
user.Email ایمیل کاربر ثبت نامی
callbackUrl آدرس صفحه فعال سازی حساب کاربری
برای این که هنگام لاگین شدن کاربر برسی کنیم که حساب کاربری کاربر فعال است. اکشن Post لاگین را به صورت زیر تغییر می دهیم.
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } var user = await UserManager.FindByEmailAsync(model.Email); if (user != null) { if (!await UserManager.IsEmailConfirmedAsync(user.Id)) { ViewBag.Message = "حساب کاربری شما غیر فعال است"; return View(); } } else { ViewBag.Message = "رمز عبور یا ایمیل شما نامتبر است"; return View(model); } // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, change to shouldLockout: true var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); switch (result) { case SignInStatus.Success: LoginTransaction(user.Id); return RedirectToLocal(returnUrl); case SignInStatus.LockedOut: return View("Lockout"); case SignInStatus.RequiresVerification: return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); case SignInStatus.Failure: default: ModelState.AddModelError("", "نام کاربری یا رمز عبور صحیح نمی باشد"); return View(model); } }
در کدهای بالا بعد اینکه بررسی کردیم ایمیل و رمز کاربر صحیح است سپس فعال بودن حساب کاربر را بررسی می کنیم.
نظر / سوال