using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace NetCoreDemo.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( "退出成功" ); } } } |