翼度科技»论坛 编程开发 .net 查看内容

ASP.NET Core 授权一(简单的Cookie)

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
Cookie
  1. 1.HTTP无连接无状态,Cookie和Session就是解决此问题。
  2. 2.客户端向服务器端发送一个请求的时,服务端向客户端发送一个Cookie 然后浏览器将Cookie保存,之后每次HTTP请求浏览器都会将Cookie发送给服务器端,需要衡量把什么数据放到cookie中,很多数据并不是每次请求都需要发给服务端,网络开销,浪费带宽,最典型的放身份认证信息。
  3. 3.Cookie有两种保存方式,一种是浏览器会将Cookie保存在内存中,还有一种是保存在客户端的硬盘中。
  4. 4.Cookie的生存周期设置为负值 ,表示的是临时储存,不会写入cookie文件,只会存在浏览器内存中,且只会在打开的浏览器窗口或者子窗口有效,一旦浏览器关闭,cookie就会消失;Cookie的生存周期设置为 ‘0‘ ,表示仅在会话期间有效。
  5. 5.Cookie大小不能超过4kb,站点内不能超过20个,浏览器里面不能超过300个
复制代码
Program.cs
  1. //注册鉴权架构
  2. #region Cookie
  3. builder.Services.AddAuthentication("Cookies").AddCookie(o =>{
  4.     o.LoginPath = "/api/Login/NoLogin";
  5. });
  6. #endregion
复制代码
TestController.cs
  1. [ApiController]
  2. [Route("api/[controller]")]
  3. public class TestController : ControllerBase
  4. {
  5.     [Authorize]
  6.     [HttpGet]
  7.     public async Task<string> Get()
  8.     {
  9.         return await Task.FromResult(DateTime.Now.ToString());
  10.     }
  11. }
复制代码
LoginController.cs
  1. [ApiController]
  2. [Route("api/[controller]/[action]")]
  3. public class LoginController : ControllerBase
  4. {
  5.     [HttpGet]
  6.     public async Task<string> NoLogin()
  7.     {
  8.         return "您还没有登录";
  9.     }
  10.     [HttpGet]
  11.     public async Task<string> LoginSuccess(string userName, string password)
  12.     {
  13.         if (userName == "admin" && password == "123456")
  14.         {
  15.             ClaimsIdentity identity = new ClaimsIdentity("Ctm");
  16.             identity.AddClaim(new Claim(ClaimTypes.Name, userName));
  17.             identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, "1"));
  18.             await HttpContext.SignInAsync("Cookies", new ClaimsPrincipal(identity));
  19.             return "登录成功";
  20.         }
  21.         else
  22.         {
  23.             return "登录失败";
  24.         }
  25.     }
  26. }
复制代码
来源:https://www.cnblogs.com/leafroc/archive/2023/12/28/17933230.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具