ASP.NET核心中有兩個(gè)混淆的安全概念,一個(gè)是認(rèn)證,另一個(gè)是授權(quán)。前者是確定用戶是誰(shuí)的過(guò)程,后者側(cè)重于允許他們做什么。今天的主題是關(guān)于如何在ASP.NET核心2.0中使用認(rèn)證。
ASP.NET核心2.0中的認(rèn)證與1.0中的認(rèn)證有些不同,需要在配置服務(wù)和配置中單獨(dú)設(shè)置。前者稱為注冊(cè)服務(wù),后者稱為注冊(cè)中間件。
public void configureservices(iServiceCollection services){
服務(wù)。AddCookieAuthentication();
服務(wù)。AddMvc(選項(xiàng)= >;
{
var policy = NewAuthOrizationPolicyBuilder()
。RequireAuthenticatedUser()
。build();
//因?yàn)槭呛笈_(tái)系統(tǒng),所以必須登錄才能操作。
選項(xiàng)。篩選器。添加(newAuthorizeFilter(策略));
});
} public void configure(IappapplicationBuilder應(yīng)用程序,IHostingEnvironment env)
{
if(env .IsDevelopment())
{
app。usedeveloper exceptionpage();
}
其他
{
app。UseExceptionHandler("/Home/Error ");
}
app。UseStaticFiles();
//使用認(rèn)證中間件
app。UseAuthentication();
app。UseMvc(routes = >;
{
路線。MapRoute(
名稱:“默認(rèn)”,
模板:“{ controller = Home }/{ action = Index }/{ id?}");
});
}
上述服務(wù)中沒(méi)有參數(shù)。addcookieauthentication,系統(tǒng)將為某些屬性指定默認(rèn)值
publicationstaticclasscookieauthenticationdefaults
{
/// <。摘要>。
///用于CookieAuthenticationOptions的默認(rèn)值。身份驗(yàn)證架構(gòu)
/// <。/summary>。
publicatconststringuthenticationscheme = " Cookies ";
/// <。摘要>。
///用于提供默認(rèn)的CookieAuthenticationOptions的前綴。CookieName
/// <。/summary>。
publicationstaticreadonly stringbookieprefix = " . aspnetcore . ";
/// <。摘要>。
///CookieAuthentication中間件為
/// CookieAuthenticationOptions。LoginPath
/// <。/summary>。
publicationstationreadonly PathString loginPath = NewPathString("/Account/log in ");
/// <。摘要>。
///CookieAuthentication中間件為
/// CookieAuthenticationOptions。LogoutPath
/// <。/summary>。
publicationstationreadonly PathString LogotPath = NewPathString("/Account/Logout ");
/// <。摘要>。
///CookieAuthentication中間件為
/// CookieAuthenticationOptions。訪問(wèn)拒絕路徑
/// <。/summary>。
publicationstationreadonly PathString AccessDenidedPath = NewPathString("/Account/AccessDenided ");
/// <。摘要>。
CookieAuthenticationOptions的默認(rèn)值。ReturnUrlParameter
/// <。/summary>。
publicationstaticreadonly stringternullparameter = " return URl ";
}
根據(jù)微軟的命名標(biāo)準(zhǔn),在ConfigureServices中統(tǒng)一使用Add***,在Configure中統(tǒng)一使用Use***。
登錄代碼
publicasync任務(wù)<。IActionResult & gt登錄(o)
{
var user = NewClaimSprincipal(NewClaimSidenty(new[]{ NewClaimTypes(ClaimTypes。名稱," bob") },CookieAuthenticationDefaults。AuthenticationScheme));
等待HttpContext。signinsync(CookieAuthenticationDefaults。身份驗(yàn)證架構(gòu)、用戶、新身份驗(yàn)證屬性
{
IsPersistent = true,
ExpiresUtc = DateTimeOffset?,F(xiàn)在。添加(時(shí)間跨度。FromDays( 180))
});
return重定向("/");
}
注銷代碼
publicasync任務(wù)<。IActionResult & gt注銷()
{
等待HttpContext。SignOutAsync(CookieAuthenticationDefaults。AuthenticationScheme);
return重定向("/");
}
原地址:http://www.cnblogs.com/bidianqing/p/6870163.html
1.《authentication 在ASP.NET Core 2.0中使用CookieAuthentication》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《authentication 在ASP.NET Core 2.0中使用CookieAuthentication》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/yule/1179464.html