Как я могу программно войти в Sitecore? - PullRequest
4 голосов
/ 13 июля 2010

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

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

Ответы [ 3 ]

5 голосов
/ 13 июля 2010

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

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

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

    Из Security API Cookbook страница 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 
        } 
    } 
    
1 голос
/ 13 июля 2010

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

0 голосов
/ 13 июля 2010

Существует более простой способ достижения вашей цели:

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

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

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

ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...