System.Web 可以在面向 .net 标准 2.0 的 class 库中使用吗
Can System.Web be used within a class library that targets .net standard 2.0
我有一个使用表单身份验证的 Asp.net 应用程序。我正在构建一个 asp.net 核心 API,它将接收一个 JWT 令牌,该令牌在有效负载中包含用户信息。此 API 需要调用 asp.net 应用程序来满足用户请求。为了让 asp.net 应用程序处理此请求,它需要表单身份验证 cookie 以将其识别为有效的登录用户。
换句话说,API需要在实际用户发出请求的请求转发刺激场景中生成并发送认证cookie。
注:
正在创建 API 以将 asp.net 应用程序的功能公开为 public API,而无需用户登录到 asp.net 应用程序 UI 直接先。
我正在创建一个以 .net 标准 2.0 为目标的 class 库,它可以在我的 api 中使用,负责创建 cookie 部分并在转发请求之前将其添加到请求中到我的 asp.net 应用程序。如何在我的 class 库中创建 FormAuthenication cookie?我发现了以下代码,想知道如何在我的库中做类似的事情?
string userData = string.Join("|",GetCustomUserRoles());
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // ticket version
username, // authenticated username
DateTime.Now, // issueDate
DateTime.Now.AddMinutes(30), // expiryDate
isPersistent, // true to persist across browser sessions
userData, // can be used to store additional user data
FormsAuthentication.FormsCookiePath); // the path for the cookie
// Encrypt the ticket using the machine key
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
// Add the cookie to the request to save it
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.HttpOnly = true;
没有。 System.Web
仅限 .NET Framework。它不包含也不兼容 .NET Standard,任何版本。此外,一般来说,Forms Auth 已被弃用(作为 ASP.NET 成员资格的一部分),因此只有 ASP.NET (.NET Framework) 才能使用它。
今后,如果您需要共享身份验证,则必须切换到 ASP.NET(核心)身份并利用数据保护 API,而不是 old-style 机器密钥加密Forms Auth 依赖于。
尽管如此,API 不应使用 cookie 身份验证。 Cookie 是客户端与 API 交互的一种 non-standard 方式,它们也是一种状态形式,而 APIs 应该是无状态的 (REST)。相反,您应该使用 Authorization
header 来使用 user/pass (基本)或令牌(承载)对每个请求进行授权。
我有一个使用表单身份验证的 Asp.net 应用程序。我正在构建一个 asp.net 核心 API,它将接收一个 JWT 令牌,该令牌在有效负载中包含用户信息。此 API 需要调用 asp.net 应用程序来满足用户请求。为了让 asp.net 应用程序处理此请求,它需要表单身份验证 cookie 以将其识别为有效的登录用户。
换句话说,API需要在实际用户发出请求的请求转发刺激场景中生成并发送认证cookie。
注: 正在创建 API 以将 asp.net 应用程序的功能公开为 public API,而无需用户登录到 asp.net 应用程序 UI 直接先。
我正在创建一个以 .net 标准 2.0 为目标的 class 库,它可以在我的 api 中使用,负责创建 cookie 部分并在转发请求之前将其添加到请求中到我的 asp.net 应用程序。如何在我的 class 库中创建 FormAuthenication cookie?我发现了以下代码,想知道如何在我的库中做类似的事情?
string userData = string.Join("|",GetCustomUserRoles());
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // ticket version
username, // authenticated username
DateTime.Now, // issueDate
DateTime.Now.AddMinutes(30), // expiryDate
isPersistent, // true to persist across browser sessions
userData, // can be used to store additional user data
FormsAuthentication.FormsCookiePath); // the path for the cookie
// Encrypt the ticket using the machine key
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
// Add the cookie to the request to save it
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.HttpOnly = true;
没有。 System.Web
仅限 .NET Framework。它不包含也不兼容 .NET Standard,任何版本。此外,一般来说,Forms Auth 已被弃用(作为 ASP.NET 成员资格的一部分),因此只有 ASP.NET (.NET Framework) 才能使用它。
今后,如果您需要共享身份验证,则必须切换到 ASP.NET(核心)身份并利用数据保护 API,而不是 old-style 机器密钥加密Forms Auth 依赖于。
尽管如此,API 不应使用 cookie 身份验证。 Cookie 是客户端与 API 交互的一种 non-standard 方式,它们也是一种状态形式,而 APIs 应该是无状态的 (REST)。相反,您应该使用 Authorization
header 来使用 user/pass (基本)或令牌(承载)对每个请求进行授权。