ASP.NET Core 授权一(简单的Cookie)
  7qplrGYnnPGJ 2023年12月29日 171 0
1.HTTP无连接无状态,Cookie和Session就是解决此问题。
2.客户端向服务器端发送一个请求的时,服务端向客户端发送一个Cookie 然后浏览器将Cookie保存,之后每次HTTP请求浏览器都会将Cookie发送给服务器端,需要衡量把什么数据放到cookie中,很多数据并不是每次请求都需要发给服务端,网络开销,浪费带宽,最典型的放身份认证信息。
3.Cookie有两种保存方式,一种是浏览器会将Cookie保存在内存中,还有一种是保存在客户端的硬盘中。
4.Cookie的生存周期设置为负值 ,表示的是临时储存,不会写入cookie文件,只会存在浏览器内存中,且只会在打开的浏览器窗口或者子窗口有效,一旦浏览器关闭,cookie就会消失;Cookie的生存周期设置为 ‘0‘ ,表示仅在会话期间有效。
5.Cookie大小不能超过4kb,站点内不能超过20个,浏览器里面不能超过300个

Program.cs

//注册鉴权架构
#region Cookie
builder.Services.AddAuthentication("Cookies").AddCookie(o =>{
    o.LoginPath = "/api/Login/NoLogin";
});
#endregion

TestController.cs

[ApiController]
[Route("api/[controller]")]
public class TestController : ControllerBase
{
    [Authorize]
    [HttpGet]
    public async Task<string> Get()
    {
        return await Task.FromResult(DateTime.Now.ToString());
    }
}

LoginController.cs

[ApiController]
[Route("api/[controller]/[action]")]
public class LoginController : ControllerBase
{
    [HttpGet]
    public async Task<string> NoLogin()
    {
        return "您还没有登录";
    }
    [HttpGet]
    public async Task<string> LoginSuccess(string userName, string password)
    {
        if (userName == "admin" && password == "123456")
        {
            ClaimsIdentity identity = new ClaimsIdentity("Ctm");
            identity.AddClaim(new Claim(ClaimTypes.Name, userName));
            identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, "1"));
            await HttpContext.SignInAsync("Cookies", new ClaimsPrincipal(identity));
            return "登录成功";
        }
        else
        {
            return "登录失败";
        }
    }
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月29日 0

暂无评论

推荐阅读
  NPQODODLqddb   2024年05月17日   69   0   0 .NET
  mVIyUuLhKsxa   2024年05月17日   52   0   0 .NET
  XkHDHG7Y62UM   2024年05月17日   44   0   0 .NET
  f18CFixvrKz8   2024年05月18日   84   0   0 .NET
  rBgzkhl6abbw   2024年05月18日   76   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   41   0   0 .NET
  S34pIcuyyIVd   2024年05月17日   58   0   0 .NET
  gKJ2xtp6I8Y7   2024年05月17日   50   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   39   0   0 .NET
7qplrGYnnPGJ