Identity用戶管理入門五(登錄、注銷)


一、建立LoginViewModel視圖模型

using System.ComponentModel.DataAnnotations;

namespace Shop.ViewModel
{
    public class LoginViewModel
    {
        [Required]
        [Display(Name = "用戶名")]
        public string Name { get; set; }
        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "密碼")]
        public string Password { get; set; }
    }
}

二、登錄方法

public IActionResult Login()
{
    return View();
}

三、登錄頁面

@model Shop.ViewModel.LoginViewModel
@{
    ViewData["Title"] = "Login";
}

<h1>Login</h1>
<form class="form-horizontal" asp-action="Login" method="post">
    <fieldset>
        <div class="control-group">
            <label class="control-label">用戶名</label>
            <div class="controls">
                <input type="text" placeholder="" class="input-xlarge" asp-for="Name">
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">密碼</label>
            <div class="controls">
                <input type="text" placeholder="" class="input-xlarge" asp-for="Password">
            </div>
        </div>
        <input type="submit" class="btn btn-primary" value="登錄"/>
    </fieldset>
</form>

四、登錄實現

[HttpPost]
public async Task<IActionResult> Login(LoginViewModel input)
{
    if (!ModelState.IsValid)
    {
        return View(input);
    }

    var user = await _userManager.FindByNameAsync(input.Name);
    if (user != null)
    {
        var result = await _signInManager.PasswordSignInAsync(user, input.Password, false, false);
        if (result.Succeeded)
        {
            return RedirectToAction("Index");
        }
    }
    ModelState.AddModelError("", "用戶名或密碼錯誤");
    return View(input);
}

五、注銷

[HttpPost]
public async Task<IActionResult> Logout()
{
    await _signInManager.SignOutAsync();
    return RedirectToAction("Index", "Home");
}

 六、新建用戶后不能直接登錄,因為在Startup.cs類中定義了用戶需要確認后才能登錄,配置代碼如下

services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
                .AddEntityFrameworkStores<ApplicationDbContext>();

因現在學習原理為主,自己增加用戶后先在數據庫(AspNetUsers)手工修改確認或者將上述需要驗證設置為false,驗證方式如下最好參考官方多重身份驗證

  • RequireConfirmedAccount  賬戶確認
  • RequireConfirmedEmail  郵件確認
  • RequireConfirmedPhoneNumber  電話確認


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM