توضیحات و دانلود

ارسال ایمیل تأییدیه کاربر پس از ثبت نام با لینک فعال سازی در ASP.Net MVC
0 0
ارسال ایمیل تأییدیه کاربر پس از ثبت نام با لینک فعال سازی در ASP.Net MVC

با سلام در این مقاله با یک مثال نحوه ارسال ایمیل تأیید کاربر پس از ثبت نام با لینک فعال سازی در ASP.Net MVC Razor توضیح خواهیم داد . فرم ثبت نام با استفاده از Entity Framework داده ها را در بانک اطلاعات ذخیره می کند.
کاربر فرم ثبت نام را با جزئیاتی از قبیل نام کاربری ، رمز عبور ، آدرس ایمیل و ... پر می کند و این جزئیات در جدول بانک اطلاعات ذخیره می شود.
به منظور اعتبارسنجی آدرس ایمیل کاربر ارائه شده در هنگام ثبت نام ، یک ایمیل تأیید با لینک فعال سازی به آدرس ایمیل ارسال شده و با کلیک کاربر بر روی لینک ، آدرس ایمیل وی تأیید می شود و اکانت وی فعال می شود.

پیکربندی بسته‌ها و فعال کردن اعتبار سنجی Client Side
اعتبار سنجی فرم ثبت نام کاربر با استفاده از حاشیه نویسی داده های Model و jQuery در Client Side انجام خواهد شد.
توجه : به طور پیش فرض اعتبارسنجی انجام شده با استفاده از ویژگی های حاشیه نویسی Data Server Side است. و از این رو ، برای کارآمد کردن Client Side ، اعتبار سنجی Client Side باید فعال شود.
بانک اطلاعات
 برای این مقاله یک جدول جدید با نام UserActivation ایجاد کرده ایم .

توجه :

می توانید جدول بانک اطلاعاتی SQL را با کلیک روی لینک دانلود کنید. فایل SQL را بارگیری کنید
اضافه کردن جدول جدید به الگوی داده های Entity Framework
Entity Framework قبلاً در مقاله قبلی پیکربندی شده است و از این رو ما با گام بعدی ادامه خواهیم داد یعنی اضافه کردن جدول جدید یعنی UserActivation به الگوی داده های موجود است .
برای این کار ، گزینه User Data Model را باز کرده و سپس بر روی Table User راست کلیک کرده و از منوی Context بر روی گزینه Update Model from Database کلیک کنید.

عملکرد فوق پنجره گفتگو Update Wizard را باز می کند ، در این قسمت شما باید جدول UserActivation تازه اضافه شده را انتخاب کرده و دکمه Finish را کلیک کنید.

جدول اکنون در Model داده های Entity Framework موجود است.

Model
کلاس Model User.cs  باقی می ماند ، اما از آنجا که Model داده  Entity Framework اصلاح شده است ، تغییرات انجام شده برای اعتبار سنجی را بازنویسی می کند از این رو ، کلاس User.cs را باز کرده و مطالب زیر را دوباره کپی کنید.

namespace User_Activation_MVC
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
 
    public partial class User
    {
        public int UserId { get; set; }
 
        [Required(ErrorMessage = "Required.")]
        public string Username { get; set; }
 
        [Required(ErrorMessage = "Required.")]
        public string Password { get; set; }
 
        [Required(ErrorMessage = "Required.")]
        [Compare("Password", ErrorMessage = "Passwords do not match.")]
        public string ConfirmPassword { get; set; }
 
        [Required(ErrorMessage = "Required.")]
        [EmailAddress(ErrorMessage = "Invalid email address.")]
        public string Email { get; set; }
       
        public System.DateTime CreatedDate { get; set; }
       
        public Nullable<System.DateTime> LastLoginDate { get; set; }
    }
}

توجه : برای توضیح درمورد یادداشتهای مختلف داده استفاده شده برای اعتبار سنجی های لازم ، ایمیل و تأیید اعتبار رمز عبور ، لطفاً مقالات زیر را مطالعه کنید :
اعتبار سنجی (validation) Client Side با استفاده از ویژگی های Annotation و جی کوئری در ASP.Net MVC Razor
استفاده از Annotations و جی کوئری در رمز عبور Client Side و تایید اعتبار رمز عبور در ASP.Net MVC
تأیید اعتبار ایمیل Client Side با استفاده از ویژگی های Annotation و جی کوئری در ASP.Net MVC
نامهای نام
باید نامهای زیر را وارد کنید.

using System.Linq;
using System.Net;
using System.Net.Mail;

Controller
Controller از دو روش تشکیل شده است.
روش برای انجام عملیات GET
در داخل این روش Action ، به سادگی نمایش داده می شود.
روش دستیابی به عملکرد POST برای ثبت نام
این روش باقی مانده است ، تنها تغییر این است که اکنون اگر ثبت نام موفقیت آمیز باشد ، متد جدید SendActivationEmail استفاده می شود.
در داخل روش SendActivationEmail ، یک کد فعال سازی منحصر به فرد با استفاده از روش NewGuid از کلاس Guid ایجاد می شود و در جدول UserActivation درج می شود.
سپس یک ایمیل به آدرس ایمیل کاربر با URL مشاهده فعال سازی به همراه کد فعال سازی ایجاد شده در URL ارسال می شود.
روش دستیابی به عملکرد GET برای فعال سازی
هنگامی که کاربر روی پیوند فعال سازی در ایمیل دریافت شده کلیک کند ، به نمای فعال سازی هدایت می شود.
کد فعال سازی از دیکشنری داده های Route استخراج و با استفاده از کد فعال سازی ، رکورد از جدول UserActivation جمع می شود .
اگر سابقه وجود داشته باشد ، یعنی معتبر باشد ، از جدول UserActivation حذف می شود و کاربر با استفاده از شیء ViewBag یک پیام موفقیت آمیز دریافت میکند .

public class HomeController : Controller
{
    // GET: Registration
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(User user)
    {
        UsersEntities usersEntities = new UsersEntities();
        usersEntities.Users.Add(user);
        usersEntities.SaveChanges();
        string message = string.Empty;
        switch (user.UserId)
        {
            case -1:
                message = "Username already exists.\\nPlease choose a different username.";
                break;
            case -2:
                message = "Supplied email address has already been used.";
                break;
            default:
                message = "Registration successful.\\nUser Id: " + user.UserId.ToString();
                SendActivationEmail(user);
                break;
        }
        ViewBag.Message = message;
 
        return View(user);
    }
 
    public ActionResult Activation()
    {
        ViewBag.Message = "Invalid Activation code.";
        if (RouteData.Values["id"] != null)
        {
            Guid activationCode = new Guid(RouteData.Values["id"].ToString());
            UsersEntities usersEntities = new UsersEntities();
            UserActivation userActivation = usersEntities.UserActivations.Where(p => p.ActivationCode == activationCode).FirstOrDefault();
            if (userActivation != null)
            {
                usersEntities.UserActivations.Remove(userActivation);
                usersEntities.SaveChanges();
                ViewBag.Message = "Activation successful.";
            }
        }
 
        return View();
    }
 
    private void SendActivationEmail(User user)
    {
        Guid activationCode = Guid.NewGuid();
        UsersEntities usersEntities = new UsersEntities();
        usersEntities.UserActivations.Add(new UserActivation
        {
            UserId = user.UserId,
            ActivationCode = activationCode
        });
        usersEntities.SaveChanges();
 
        using (MailMessage mm = new MailMessage("sender@gmail.com", user.Email))
        {
            mm.Subject = "Account Activation";
            string body = "Hello " + user.Username + ",";
            body += "<br /><br />Please click the following link to activate your account";
            body += "<br /><a href = '" + string.Format("{0}://{1}/Home/Activation/{2}", Request.Url.Scheme, Request.Url.Authority, activationCode) + "'>Click here to activate your account.</a>";
            body += "<br /><br />Thanks";
            mm.Body = body;
            mm.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.EnableSsl = true;
            NetworkCredential NetworkCred = new NetworkCredential("sender@gmail.com", "<password>");
            smtp.UseDefaultCredentials = true;
            smtp.Credentials = NetworkCred;
            smtp.Port = 587;
            smtp.Send(mm);
        }
    }
}

Views
Index
این View شامل فرم ثبت نام است و به همین صورت باقی می ماند

Activation
Viewفعال سازی به سادگی پیام تنظیم شده در شی ViewBag را نشان می دهد.

@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Activation</title>
    <style type="text/css">
        body {
            font-family: Arial;
            font-size: 10pt;
        }
    </style>
</head>
<body>
    <div>
        <h1>@ViewBag.Message</h1>
    </div>
</body>
</html>

عکسهای صفحه
رکورد در جدول UserActivation درج شد

ایمیل فعال سازی ارسال شده به کاربر

 

نمایش پیام موفقیت آمیز در هنگام فعال سازی پیام


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :