在 asp.net mvc 中使用注册/登录操作

问题描述 投票:0回答:2

我在启动新的 ASP.NET 应用程序时遇到问题。我选择带有个人用户帐户身份验证的 asp.net mvc 模板,项目正常生成并启动。我的问题是:我需要做什么才能使用注册/登录选项?据我了解,负责这些操作的方法是自动生成的,但是我应该对有关用户信息的数据库模式做一些事情(它不应该也自动创建吗?)。

无论如何,在注册表单中填写字段后,我收到错误,无法找到文件,并且在第 155 行找到错误: var result = wait UserManager.CreateAsync(user, model.Password);

我正在 Windows 8 上使用 Visual Studio Community 2015。提前谢谢您

c# asp.net visual-studio
2个回答
0
投票
public async Task<IActionResult> Register(RegisterVM registerVM)
    {
        if (!ModelState.IsValid)
        {
            return View();
        }

        AppUser appUser = new AppUser()
        {
            Fullname = registerVM.Fullname,
            UserName = registerVM.Username,
            Email = registerVM.Email
        };
        IdentityResult result = await _userManager.CreateAsync(appUser, registerVM.Password);
        if (!result.Succeeded)
        {
            foreach (var error in result.Errors)
            {
                ModelState.AddModelError("", error.Description);
            }
            return View(registerVM);
        }

        await _userManager.AddToRoleAsync(appUser, Roless.Admin.ToString());
        await _signInManager.SignInAsync(appUser, true);
        return RedirectToAction("index", "home");
    }
    public IActionResult Login()
    {
        return View();
    }
    [HttpPost]
    [AutoValidateAntiforgeryToken]
    public async Task<IActionResult> Login(LoginVM loginVM, string returnurl)
    {
        if (!ModelState.IsValid)
        {
            return View();
        }

        AppUser dbUser = await _userManager.FindByEmailAsync(loginVM.Email);
        if (dbUser == null)
        {
            ModelState.AddModelError("", "Ya email ya da Password sehvdir");
            return View(loginVM);
        }
        SignInResult result = await _signInManager.PasswordSignInAsync(dbUser, loginVM.Password, loginVM.RememerMe, true);


        if (result.IsLockedOut)
        {
            ModelState.AddModelError("", "Your Account Is Lock Out");
            return View(loginVM);
        }

        if (!result.Succeeded)
        {
            ModelState.AddModelError("", "Ya Email ya da Password sehvdir");
            return View(loginVM);
        }
        if (returnurl == null)
        {
            return RedirectToAction("index", "home");
        }
        foreach (var item in await _userManager.GetRolesAsync(dbUser))
        {
            if (item.Contains(Roless.Admin.ToString()))
            {
                return RedirectToAction("index", "Dashboard", new { area = "AdminF" });
            }
        }
        return Redirect(returnurl);

    }

0
投票

namespace MultiShop.Controllers
{
    public class AccountController(UserManager <AppUser> _userManager,SignInManager<AppUser> _signInManager) : Controller
    {
        public IActionResult Register()
        {
            return View();
        }
        [HttpPost]
        public async Task<IActionResult> Register(RegisterVM vm)
        {
            if (!ModelState.IsValid) { return View(vm); }
            AppUser user = new AppUser 
            {
            Email = vm.Email,
            UserName = vm.Name,
            Name = vm.Name,
            Surname = vm.Surname,
            };

         IdentityResult result =   await  _userManager.CreateAsync(user,vm.Password);
            if (!result.Succeeded) {
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError("",error.Description);
                    return View(vm);
                }
            };
            return RedirectToAction(nameof(Index),"Home");
        }

        public async Task<IActionResult> Login() 
        {
            return View();
        } 
        
        public async Task<IActionResult> Login(AdminVM vm) 
        {
            if (!ModelState.IsValid) { return View(vm); }
            AppUser user=await _userManager.FindByNameAsync(vm.UsernameorEmail);
            if (user == null) { 
                user =await _userManager.FindByEmailAsync(vm.UsernameorEmail);
                if (user==null)
                {
                    ModelState.AddModelError("","Istifadeci adi ve ya parol yalnisdir");
                   return View(vm);
                }
            }

            user.AccessFailedCount++;
          

          var result=  await _signInManager.CheckPasswordSignInAsync(user, vm.Password,true);
            if (result.IsLockedOut)
            {
                ModelState.AddModelError("", "Cox sayda yalnis parol gonderdiniz");
                return View(vm);
            }

            return RedirectToAction(nameof(Index),"Home");
        }
    }
}

        var builder = WebApplication.CreateBuilder(args);
        builder.Services.AddControllersWithViews();
        builder.Services.AddDbContext<MultiShopContext>();
        builder.Services.AddIdentity<AppUser, IdentityRole>(opt =>
        {
            opt.User.RequireUniqueEmail = true;
            opt.Password.RequiredLength = 3;
            opt.Password.RequireNonAlphanumeric = false;
            opt.Password.RequireDigit = false;
            opt.Password.RequireLowercase = false;
            opt.Password.RequireUppercase = false;
        }
        ).AddEntityFrameworkStores<MultiShopContext>().AddDefaultTokenProviders();
        var app = builder.Build();
        app.UseStaticFiles();
        app.MapControllerRoute(
      name: "areas",
      pattern: "{area:exists}/{controller=Slider}/{action=Index}/{id?}"
    );
        app.MapControllerRoute(
            "default",
            "{controller=Home}/{action=Index}"
            );
        app.Run();
    }
© www.soinside.com 2019 - 2024. All rights reserved.