Как я могу программно войти в Sitecore?

Как я могу программно войти в Sitecore? Например, если вы хотите подключить небольшую часть API Sitecore к настольному приложению, вам необходимо сначала войти в sitecore для доступа к базам данных и т. Д.

Можно ли это сделать?

3 ответа

Решение

Как сказал Марк, вам нужно будет создать веб-сервис, с которым будет работать ваше настольное приложение. Если вам нужно иметь дело с разрешениями в этой службе, у вас есть два варианта.

  1. Используйте SecurityDisabler, чтобы ваш веб-сервис работал в контексте пользователя с правами администратора.

    using (new Sitecore.SecurityModel.SecurityDisabler())
    {
        // do stuff here
    }
    
  2. Для более конкретного контроля вы можете использовать UserSwitcher.

    Со страницы поваренной книги API безопасности 34

    string domainUser = @"domain\user"; 
    
    if (Sitecore.Security.Accounts.User.Exists(domainUser)) 
    { 
        Sitecore.Security.Accounts.User user = 
        Sitecore.Security.Accounts.User.FromName(domainUser,false); 
    
        using (new Sitecore.Security.Accounts.UserSwitcher(user)) 
        { 
            //TODO: code to invoke as user 
        } 
    } 
    

На самом деле, нет. Однако вы можете написать поддерживающую веб-службу для своего настольного приложения и запустить ее в контексте Sitecore.

Есть более простой способ достичь вашей цели:

  1. Создайте настольное приложение и создайте ссылку на ту же версию двоичных файлов Sitecore, которую использует ваше веб-приложение.
  2. Настройте приложение для настольного компьютера так, чтобы оно указывало на те же базы данных Sitecore, что и на вашем веб-сайте.
  3. Используйте блокировщик безопасности, а затем установите контекст следующим образом: Sitecore.Context.SetActiveSite ("website");

Sitecore может сказать вам, что то, что вы пытаетесь сделать, не будет работать. Но поверьте мне, это работает, и я использовал этот метод в проекте раньше.

Дополнительная информация: Sitecore использует Master, Core и Web DB в качестве хранилища данных. Мой предложенный метод использует API-интерфейсы Sitecore для прямой записи в БД. При использовании этого метода вы должны знать о последствиях кеша.

ура!

Другие вопросы по тегам