簡體   English   中英

無法登錄,但可以在 ASP.NET MVC 5 應用程序中注冊

[英]Can't login, but can register in ASP.NET MVC 5 app

成功注冊隨機用戶后,應用程序不會自動記錄他們。 在默認登錄視圖中輸入信息后,我什至無法登錄。 它只是將我引導至主頁/索引視圖,僅此而已。 我在 FilterConfig 中添加了 AuthorizeAttribute 和一個管理員角色

我試圖創建簡單的新示例 ASP.NET MVC 5 應用程序只是為了測試默認日志記錄,但它也沒有在那里工作。 與之前的應用程序一樣,它一直將我引導至主頁/索引頁面

    // GET: /Account/Login
    [AllowAnonymous]
    public ActionResult Login(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View();
    }

    //
    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {

            case SignInStatus.Success:
                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("", "Nieprawidłowa próba logowania.");
                return View(model);
        }
    }

    [AllowAnonymous]
    public ActionResult Register()
    {
        return View();
    }

    //
    // POST: /Account/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)
            {

                //var roleStore = new RoleStore<IdentityRole>(new ApplicationDbContext());
                //var roleManager = new RoleManager<IdentityRole>(roleStore);
                //await roleManager.CreateAsync(new IdentityRole { Name = "Admin" });
                //await UserManager.AddToRoleAsync(user.Id, "Admin");

                await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);



                return RedirectToAction("Index", "Home");
            }
            AddErrors(result);
        }

        return View(model);
    }

我想知道如何成功登錄用戶。

查看您的代碼,有人會想知道它是如何沒有拋出錯誤或構建如何完成的。

在您的Account controller Login [HttpPost],下面的行不存在。

var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

聲明變量后你需要有這一行

switch (result)
{
     //ommited block of code
}

如果有人遇到此問題,請確保模型視圖必須匹配(每個屬性都應在視圖中呈現),除非該屬性是默認值。 隨着檢查屬性類型。

接下來,您需要檢查控制器和視圖,確保傳遞的屬性數量正確。

不匹配的映射會導致操作失敗。

大多數情況下,這將解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM