鑒權(quán)(Authentication)授權(quán)(Authorization)
簡單的理解:鑒權(quán)衡量你能不能進一道門,授權(quán)是你進門了可以干什么文章來源地址http://www.zghlxwxcb.cn/news/detail-760719.html
Cookie
1.HTTP無連接無狀態(tài),Cookie和Session就是解決此問題。
2.客戶端向服務(wù)器端發(fā)送一個請求的時,服務(wù)端向客戶端發(fā)送一個Cookie 然后瀏覽器將Cookie保存,之后每次HTTP請求瀏覽器都會將Cookie發(fā)送給服務(wù)器端,需要衡量把什么數(shù)據(jù)放到cookie中,很多數(shù)據(jù)并不是每次請求都需要發(fā)給服務(wù)端,網(wǎng)絡(luò)開銷,浪費帶寬,最典型的放身份認證信息。
3.Cookie有兩種保存方式,一種是瀏覽器會將Cookie保存在內(nèi)存中,還有一種是保存在客戶端的硬盤中。
4.Cookie的生存周期設(shè)置為負值 ,表示的是臨時儲存,不會寫入cookie文件,只會存在瀏覽器內(nèi)存中,且只會在打開的瀏覽器窗口或者子窗口有效,一旦瀏覽器關(guān)閉,cookie就會消失;Cookie的生存周期設(shè)置為 ‘0‘ ,表示僅在會話期間有效。
5.Cookie大小不能超過4kb,站點內(nèi)不能超過20個,瀏覽器里面不能超過300個
Program.cs
//注冊鑒權(quán)架構(gòu)
#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 "登錄失敗";
}
}
}
文章來源:http://www.zghlxwxcb.cn/news/detail-760719.html
到了這里,關(guān)于ASP.NET Core 授權(quán)一(簡單的Cookie)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!