Boj*_*jan 5 c# asp.net-mvc asp.net-core-mvc asp.net-core-identity asp.net-core-mvc-2.0
我正在尝试让我的密钥对登录的用户保持不变。由于我目前正在为网站使用共享主机,因此我决定使用文件系统来存储密钥环。所以代码看起来像这样:
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(""))
.SetApplicationName("MyWebsite")
.SetDefaultKeyLifetime(TimeSpan.FromDays(90))
.ProtectKeysWithCertificate(cert);
Run Code Online (Sandbox Code Playgroud)
然而,我真正不明白的是我应该把这些钥匙放在哪里,以及我要经过什么路径才能让它们在那里。由于这是一个 MVC 核心应用程序,我有点困惑,在 MVC 5 中我会将它放在 App_Data 文件夹中,但这里没有 App_Data 文件夹,我想确保它保持安全并且无法通过浏览器访问。
另一件事是我传递的是相对路径还是直接路径?如果是相对的,我的起点在哪里?它是 bin、根目录还是其他什么?
Dav*_*idG 11
最简单的方法可能是在 app 文件夹中创建一个文件夹。例如,创建一个名为 的文件夹Keys,并使用该IHostingEnvironment对象获取 app 文件夹。像这样的东西:
public class Startup
{
private readonly IHostingEnvironment _environment;
public Startup(IHostingEnvironment environment)
{
_environment = environment;
}
public void ConfigureServices(IServiceCollection services)
{
var keysFolder = Path.Combine(_environment.ContentRootPath, "Keys");
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(keysFolder))
.SetApplicationName("MyWebsite")
.SetDefaultKeyLifetime(TimeSpan.FromDays(90))
.ProtectKeysWithCertificate(cert);
}
// snip
}
Run Code Online (Sandbox Code Playgroud)