ثبتنام کاربر و انتقال آن به صفحه اصلی
سلام دوستان
دوستان من یه صفحه ثبتنام کاربر ساختم.میخام وقتی یه کاربری ثبتنام کرد به صفحه اصلی بره و لاگین کنه و موقع ثبت اطلاعات اگر کاربری دوبار روی صفحه ثبتنام کلیک کرد باعث نشود دوبار در دیتابیس ذخیره شود.
این کد رجیستر در کنترلر home:
public ActionResult Register(User user)
{
UserRepository blUser = new UserRepository();
if (ModelState.IsValid)
{
if (blUser.Add(user))
{
//موفق
MessageBox.Show("با موفقیت ثبت شد", MessageType.Success);
return RedirectToAction("Index");
}
else
{
//نا موفق
return MessageBox.Show("ثبت نشد", MessageType.Error);
}
}
else
{
//خطا مقداری
return MessageBox.Show(ModelState.GetErrors(), MessageType.Warning);
}
}
از این کد هم استفاده کردم ولی دیگه پیغام ثبت شد رو بهم نشون نمیده:
@*<script>
$('form').submit(function () {
if ($(this).valid()) {
$(':submit', this).attr('disabled', 'disabled');
}
});</script>*@
}
نقل قول: ثبتنام کاربر و انتقال آن به صفحه اصلی
اگر از Identity استفاده میکنید ، خودش براتون اینکار رو انجام میده .
اما در پروژه های پیشفرض بعد از ثبت نام ، خودش کاربر رو بلافاصله بعد از ثبت نام ، لاگین میکنه ; اگر میخواید به این شکل نباشه باید این کد رو :
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
از اکشن Register حذف کنید :
[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);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
نقل قول: ثبتنام کاربر و انتقال آن به صفحه اصلی
خیر من از identity استفاده نمیکنم.
از ممبرشیپ ستفاده کردم.
یه جدول یوزر دارم که کاربران رو توش ذخیره میکنم.
درکنترلر home هم یه اکشن login ویه اکشن register
اکشن لاگین بصورت زیر هست:
[HttpPost]
public ActionResult Login(string username, string password, bool rememberme)
{
var blUser = new UserRepository();
if (blUser.Exist(username, password))
{
FormsAuthentication.SetAuthCookie(username, rememberme);
return RedirectToAction("Index");
}
else
{
ViewBag.Message = "نام کاربری یا پسورد اشتباه است";
}
return View();
}
که authentication رو در گلوبال انجام دادم:
protected void FormsAuthentication_OnAuthenticate(Object sender, FormsAuthenticationEventArgs e)
{
if (FormsAuthentication.CookiesSupported == true)
{
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
string username = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).Name;
var blUser = new UserRepository();
string roles = blUser.Where(p => p.Email == username).Single().Roles;
e.User = new GenericPrincipal(new System.Security.Principal.GenericIdentity(username ), roles.Split(','));
}
}
بدرستی کد شما رو متوجه نشدم الان من باید زمانیکه یه یوزر ثبتنام میکنه رو بصورت اتوماتیک لاگین رو براش انجام بدم؟
نقل قول: ثبتنام کاربر و انتقال آن به صفحه اصلی
من طبق کدی که شما گذاشتین کد ریجیستر خودم رو تغییر دادم. برنامه داره بدرستی کار میکنه با trace که انجام دادم اما redirect به صفحه index انجام نمیشه و تو صفحه register میمونه
public ActionResult Register(User user)
{
UserRepository blUser = new UserRepository();
if (ModelState.IsValid)
{
if (blUser.Add(user))
{
if (blUser.Exist(user.Email,user.Password))
{
FormsAuthentication.SetAuthCookie(user.Email, false);
}
//موفق
return RedirectToAction("Index");
}
else
{
//نا موفق
return MessageBox.Show("ثبت نشد", MessageType.Error);
}
}
else
{
//خطا مقداری
return MessageBox.Show(ModelState.GetErrors(), MessageType.Warning);
}
}
نقل قول: ثبتنام کاربر و انتقال آن به صفحه اصلی
از این کد استفاده کنید برای Redirect به صفحه index :
return RedirectToAction("Index", "Home");
چون اگر نام کنترلر رو ندید ، صفحه ی index کنترلر Account رو برای redirect تشخیص میده و دوباره مجدد به صفحه Register برمیگرده.
نقل قول: ثبتنام کاربر و انتقال آن به صفحه اصلی
ممنون درست شد.
من اولین باره دارم وبسایت طراحی میکنم.میشه لطف کنین بگین چه نکاتی برای امنیت کاربرانی که ثبتنام میکنن باید به وبسایتم اضافه کنم.
چون من فقط همین authentication رو بکار بردم و اینکه چک میکنم یوزر تکراری ثبت نشده باشه.
ممنون
نقل قول: ثبتنام کاربر و انتقال آن به صفحه اصلی
در صفحه ثبت نام و ورود کاربران ، از Captcha استفاده کنید تا از ثبت نام ربات ها و Spammer ها جلوگیری شود.
آموزش : http://sahraweb.com/post/204/%D8%A7%...%D8%B1-ASP-MVC
نقل قول: ثبتنام کاربر و انتقال آن به صفحه اصلی
بسیار ممنون
من از این کد استفاده کردم.فقط چطور میتونم پیغام خطا رو تو پیج خودم نشون بدم و بصورت پیغام جاوااسگریپت تو یه پیج دیگه نباشه