iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0

昨天做好初步的畫面了。今天來寫商業邏輯部分。

步驟:
step1.
新增AuthService.cs 和 IAuthService.cs,在系統裡面。(注意:因為是新的interface所以需要再program.cs裡面進行註冊)

step2.
IAuthService.cs

public interface IAuthService
    {
        Task<bool> LoginUserCheckPwd(string code);
    }

AuthService.cs
我們這邊簡單一點,只驗證密碼的明碼就好,不加密驗證甚麼的、也不多加甚麼驗證邏輯。

public class AuthService : IAuthService
    {
        private readonly ApplicationDbContext _db;

        public AuthService(ApplicationDbContext db)
        {
            _db = db;
        }

        public async Task<bool> LoginUserCheckPwd(string code)
        {
            return await _db.AuthUsers.AnyAsync(x => x.Pwd == code);
        }
    }

step3.AuthService.cs註冊到loginController。(請自行撰寫)

step4.加上接收打密碼驗證的Request。
這邊是利用.Net 本身提供的權限、驗證套件去做的。(可以看一下註解的說明)

[HttpPost]
        public async Task<IActionResult> Index(string code)
        {
            if (await _auth.LoginUserCheckPwd(code))
            {
            
                // 要記錄在Cookie 裡面的內容
                var claims = new List<Claim>
                {
                    new Claim("UserCode",code),
                };

                var claimsIdentity = new ClaimsIdentity(
                    claims,
                    CookieAuthenticationDefaults.AuthenticationScheme);

                // HttpContext 回傳時會把註冊訊息輸入進去。
                await HttpContext.SignInAsync(
                    CookieAuthenticationDefaults.AuthenticationScheme,
                    new ClaimsPrincipal(claimsIdentity),
                    new AuthenticationProperties
                    {
                        ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(1),
                        IsPersistent = true,
                    });

                return Redirect("/");
            }

            return View();
        }

今天就先到這一小段落,明天再繼續完成一小步驟喔~


上一篇
[Day 26] 登入系統(一)
下一篇
[Day 28] 登入系統(三)
系列文
Asp.Net Core 零基礎建立自己的Blog30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言