Путь к файлу для PersistKeysToFileSystem на общем сервере - PullRequest
2 голосов
/ 23 марта 2019

Я пытаюсь сохранить мои ключи для пользователей, которые входят в систему. Поскольку в настоящее время я использую общий хостинг для веб-сайта, я решил использовать файловую систему для хранения связки ключей.Итак, код выглядит следующим образом:

services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(""))
.SetApplicationName("MyWebsite")
.SetDefaultKeyLifetime(TimeSpan.FromDays(90))
.ProtectKeysWithCertificate(cert);

Однако я не совсем понимаю, где я должен держать эти ключи и каков будет путь, по которому я прохожу, чтобы они там были.Так как это основное приложение MVC, я немного запутался, в MVC 5 я бы поместил его в папку App_Data, но здесь нет папки App_Data, и я хочу убедиться, что оно остается безопасным и недоступным через браузер.

Другое дело, передать ли мне относительный путь или прямой путь?Если это относительно, где моя отправная точка?Это bin, корневой каталог или что-то еще?

1 Ответ

4 голосов
/ 23 марта 2019

Самый простой способ - создать папку внутри папки приложения. Например, создайте папку с именем Keys и используйте объект IHostingEnvironment, чтобы получить папку приложения. Примерно так:

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
}
...