Asp.net IDataProtector 的核心用途字符串

Asp.net core purposed string for IDataProtector

"使用数据保护 API 的组件的命名空间和类型名称是一个很好的经验法则,因为在实践中,此信息永远不会冲突。" - 微软文档

我想使用 data provider 保护一些 URL 数据。 我应该为 CreateProtector 上的每个 controller 使用不同用途的字符串吗?

如果我与控制器共享任何数据,那么在取消保护数据时显然会出现异常。

那么,我应该为所有控制器使用 unique purposed string 还是应该为每个控制器使用唯一的专用字符串?

MicrosoftDataprotection

data-protection-aspnet-core

Should I use a different purposed string for each controller on CreateProtector?

你问的这个问题,这个需要根据你的需要来决定。一般来说,目的字符串就足够了。

微软文档:

When you create a protector you must provide one or more Purpose Strings. A purpose string provides isolation between consumers. For example, a protector created with a purpose string of "green" wouldn't be able to unprotect data provided by a protector with a purpose of "purple".

我认为这只是针对您当前的应用,提供的数据保护功能,仅用于生成和验证数据。

假设webappA和webappB中使用的字符串都是string1,webappA中生成的受保护字符串无法在webappB中解析。

这说明还是比较安全的,所以可以在不同的controller中使用不同的目的字符串。只有在解析的时候,对应的controller才需要使用对应的purpose string。