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