.net Core 用戶登入身份驗證簡單的demo


下面是.net Core Startup文件的配置信息,關注標紅的地方

using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
 
namespace Demo
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            //添加 身份驗證 服務
            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).
             AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, o =>
             {
                 o.LoginPath = new PathString("/Home/Login");
             });
        }
 
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
 
            //路由設置默認起始為  指定的Hmoe/Center
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Center}");
            });
            //使用身份驗證服務
            app.UseAuthentication();
        }
    }
}

  以下是 控制器代碼,關注標紅的地方

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
 
namespace Demo.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Login()
        {
            return Content("Login");
        }
        public IActionResult DoLogin()
        {
            /*
             * 記錄cookie之前要對用戶的帳號和密碼進行驗證
             * 如果驗證成功則把id和用戶名記入 cookie
             * (帳號和密碼驗證要查詢數據庫 我在這里就沒有去處理,下面默認是驗證通過后的代碼)
             * 登錄以后獲取token,
             * 獲取傳遞的token,去用戶信息
             * 
             */
            string token = "123456";
            string name = "狼來了";
            ClaimsIdentity identity = new ClaimsIdentity("Forms");
 
            identity.AddClaim(new Claim(ClaimTypes.Sid, token));
            identity.AddClaim(new Claim(ClaimTypes.Name, name));
 
            ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(identity);
            HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal);
 
            return Content("登錄成功!!");
        }
 
        /// <summary>
        /// 用戶進入內容的之前 先去用戶信息進行驗證
        /// 如果驗證不通過則進入 Home/Login 這個是在添加服務配置時添加的
        /// </summary>
        /// <returns></returns>
        [Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
        public IActionResult Center()
        {
             string sid= User.FindFirstValue(ClaimTypes.Sid);//獲取ID
             string mane= User.FindFirstValue(ClaimTypes.Name);//獲取用戶名
             return Content("Center");
        }
        public IActionResult Logout()
        {
           HttpContext.SignOutAsync().Wait();//注銷
           return Content("退出成功!!");
        }
    }
}

  So easy!!!!!!


免責聲明!

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



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