怎么在ASP。网络核心在使用饼干验证身份

  介绍

本篇文章为大家展示了怎么在ASP。网络核心在使用饼干验证身份,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

ASP。网络核心1. x

按下列步骤操作:

在您的项目中安装Microsoft.AspNetCore.Authentication.CookiesNuGet包。此包包含Cookie中间件。

在Startup.cs文件中配置的方法中添加下面的行,在app.UseMvc()语句之前:

app.UseCookieAuthentication (new  CookieAuthenticationOptions ()   ,,,{   ,,,,,AccessDeniedPath =,“/账户/禁止/?   ,,,,,AuthenticationScheme =,“MyCookieAuthenticationScheme",   ,,,,,AutomaticAuthenticate =,真的,   ,,,,,AutomaticChallenge =,真的,   ,,,,,LoginPath =,“/账户/授权/?   ,,,});

ASP。网络核心2. x

按下列步骤操作:

如果不使用Microsoft.AspNetCore。所有元包,则在您的项目中安装2.0版的<代码> Microsoft.AspNetCore.Authentication.CookiesNuGet>

在启动。cs文件中配置的方法中调用UseAuthentication方法:

app.UseAuthentication ();

在启动。cs文件中的ConfigureServices方法中调用AddAuthentication和AddCookie方法:

services.AddAuthentication (“MyCookieAuthenticationScheme")   ,,,,,,,.AddCookie (“MyCookieAuthenticationScheme",, options =祝辞,{   ,,,,,,,,,options.AccessDeniedPath =,“/账户/禁止“;;   ,,,,,,,,,options.LoginPath =,“/账户/授权/?;   ,,,,,,,});

上面的代码片段配置了以下部分或全部选项:

<李>

AccessDeniedPath——当用户尝试访问资源但没有通过任何授权策略时,这是请求会重定向的相对路径资源。

<李>

AuthenticationScheme——这是一个已知的特定饼干认证方案的值。当有多个饼干验证实例,并且您想限制对一个实例的授权时,这就非常有用。

<李>

AutomaticAuthenticate -此标识仅适用于ASP。网络核心1。x。它表示饼干身份验证应在每个请求上运行,并尝试验证和重建序列化主体。

<李>

AutomaticChallenge -此标识仅适用于ASP。网络核心的1.倍。这表示当授权失败时,1。x饼干认证应将浏览器重定向到LoginPath或AccessDeniedPath。

<李>

LoginPath——当用户尝试访问资源但尚未认证时,这是请求重定向的相对路径。

其它选项包括为饼干认证创建的设置选项,身份验证的饼干的名称,饼干的域和饼干各种安全属性。默认情况下,饼身份验证为其创建的任何饼干使用适当的安全选项,例如:

<李>

设置HttpOnly标志以防止客户端JavaScript中访问饼干

<李>

如果请求是通过HTTPS访问,则将饼干限制为HTTPS

创建身份认证饼干

要创建一个保存用户信息的Cookie,您必须构建一个ClaimsPrincipal保存您希望序列化到Cookie中的信息。

ASP。网络核心1。x

await  HttpContext.Authentication.SignInAsync (“MyCookieAuthenticationScheme",,本金),

ASP。净酷睿2。x

await  HttpContext.SignInAsync (“MyCookieAuthenticationScheme",,本金),

这将创建一个加密的饼干并将其添加到当前响应中。在调用SignInAsync时,必须在配置中指定的AuthenticationScheme。

顺便提一下,使用的加密方式是ASP。网络核心的数据保护系统。如果您在多台机器上进行托管,负载平衡或使用网络集群,则需要配置数据保护才能使用相同的密钥和应用程序标识符。

签出(登出)

要退出当前用户并删除其饼干,请在控制器中调用以下方法:

ASP。网络核心1。x

await  HttpContext.Authentication.SignOutAsync (“MyCookieAuthenticationScheme");

ASP。净酷睿2。x

await  HttpContext.SignOutAsync (“MyCookieAuthenticationScheme");

服务端变化反馈

警告:一旦创建了认证的饼干,它将成为唯一的身份来源。即使您在服务系统中禁用用户,饼身份验证也无法了解此信息,只要饼干有效,用户仍可登录。

饼干认证在其选项中提供了一系列事件.ValidateAsync()事件可用于拦截和重写饼干身份验证。

可以考虑在后端用户数据库中增加LastChanged列。为了在数据库更改时使饼干无效,您应该首先在创建饼干时添加一个LastChanged包含当前值的声明。数据库更改时,更新LastChanged例的值。

怎么在ASP。网络核心在使用饼干验证身份