.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!!!!!!