在Startup類中添加授權(quán)和驗(yàn)證的注入對象和中間件
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、沁陽網(wǎng)站維護(hù)、網(wǎng)站推廣。
1.在ConfigureServices方法注入對象
//驗(yàn)證注入 services.AddAuthentication ( opts=>opts.DefaultScheme= Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.AuthenticationScheme ).AddCookie( Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.AuthenticationScheme , opt => { opt.LoginPath = new Microsoft.AspNetCore.Http.PathString("/login"); opt.AccessDeniedPath= new Microsoft.AspNetCore.Http.PathString("/home/error"); opt.LogoutPath= new Microsoft.AspNetCore.Http.PathString("/login"); opt.Cookie.Path = "/"; } );
2.在Configure方法中添加中間件
//開啟驗(yàn)證中間件 app.UseAuthentication();
在特效下去授權(quán)controller和action
[Authorize(Roles ="admin")]//允許那些角色訪問 [AllowAnonymous]//允許所有人訪問
登錄方法
[HttpGet("login")] [AllowAnonymous]//允許所有人訪問 public IActionResult Login( string returnUrl) { //沒有通過驗(yàn)證 if ( ! HttpContext.User.Identity.IsAuthenticated) { ViewBag.returnUrl = returnUrl; } return View(); }
登錄實(shí)現(xiàn)功能方法
[HttpPost("login")] [AllowAnonymous]//允許所有人訪問 public IActionResult Login(string NET_User, string PassWord ,string returnUrl) { if (NET_User == "123" && PassWord == "123") { var claims = new System.Security.Claims.Claim[] { new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Role,"admin"), //User.Identity.Name new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name,"NAME"), }; HttpContext.SignInAsync( Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.AuthenticationScheme, new System.Security.Claims.ClaimsPrincipal(new System.Security.Claims.ClaimsIdentity(claims)) ); return new RedirectResult(string.IsNullOrEmpty(returnUrl) ? "/home/index":returnUrl); } else { ViewBag.error = "用戶名或密碼錯誤"; return View(); } }
前臺頁面