Изящный способ ссылки на элемент в клиенте Sitecore? - PullRequest
3 голосов
/ 01 июня 2011

Я ищу лучший способ ссылки на элемент в клиенте Sitecore (не на внешнем веб-сайте). Ссылка будет встроена в сообщение о сломанной ссылке. Пользователь должен иметь возможность щелкнуть ссылку и запустить редактор содержимого Sitecore с этим элементом, автоматически выбранным в дереве.

Я нашел решение Марка Урсино в его блоге здесь , но, к сожалению, оно работает, только если вы активно вошли в Sitecore (в противном случае после входа в систему вы попадете на рабочий стол Sitecore).

Я использую Sitecore.NET 6.4.1 (версия 110324)

UPDATE

Просто чтобы закрыть цикл решения Марко:

public void Process(LoggedInArgs args)
{
    string url = HttpUtility.UrlDecode(WebUtil.GetQueryString("url"));

    // Ensure we're dealing with the client login site and there is a URL to redirect to
    if (Sitecore.Context.GetSiteName() == "login" &&
        !String.IsNullOrEmpty(url))
    {
        var queryString = WebUtil.ParseQueryString(url);

        // Check for redirect param to prevent accidental redirections 
        if (queryString.ContainsKey("redirectAfterLogin"))
                WebUtil.Redirect(url);
    }
}

Ответы [ 3 ]

3 голосов
/ 01 июня 2011

Вы хотели бы иметь одну страницу, на которую указывают все ваши ссылки, которые обрабатывают логин и затем перенаправляют на Sitecore.Вы хотели бы добавить несколько параметров строки запроса в URL ссылок в электронном письме, таких как: itemID и serialCode.В связи с последствиями такого рода действий для безопасности я настоятельно рекомендую установить зашифрованный код, который можно отправлять по ссылкам, которые могут быть незашифрованы и проверены по сохраненному коду для этого конкретного отчета, чтобы человек, пытающийся войти в системуэто тот, кому вы отправили электронное письмо.После проверки кода вы получите доступ к учетным данным пользователя низкого уровня, которые вы можете сохранить в своем файле web.config для автоматического входа в систему.Затем вы использовали бы itemID, чтобы определить, какой элемент открыть в редакторе контента.(Обратите внимание, что обход процесса входа в систему Sitecore откроет дыры в безопасности, от которых вы должны быть готовы защищаться)

Еще один менее сложный и более безопасный вариант - отправлять сводку по электронной почте и уведомление о новом отчете со ссылкой на Sitecore.страница авторизации.Затем создайте пользовательское приложение в Sitecore для создания и просмотра этих отчетов.Получатель письма может затем войти в систему и использовать это приложение, чтобы просмотреть его после получения уведомления.Это было бы похоже на то, как работает программа просмотра журнала.Оказавшись в режиме рабочего стола Sitecore, они могут переключаться между редактором контента и вашим пользовательским приложением, которое затем может иметь список ссылок на все элементы.Это, конечно, зависит от гибкости вашего клиента.

2 голосов
/ 02 июня 2011

Вот что я использовал раньше:

В sitecore web.config есть опция для отправки через необработанные URL. Установите это при использовании этого файла патча

<setting name="Authentication.SaveRawUrl">
  <patch:attribute name="value">true</patch:attribute>
</setting>

Затем я добавил дополнительный процессор в процессор входа в систему после CleanupUserProfile, который считывает параметры строки запроса и перенаправляет на соответствующую страницу. Этот процессор вызывается каждый раз, независимо от того, вошел ли пользователь ранее или нет.

Подпись для моего пользовательского зарегистрированного процессора:

namespace [...]
{
    public class LoginModeSwitcher
    {
        public void Process(LoggedInArgs args)
        {
            // your code here
        }
    }
}

Это конфигурация патча, которую я использовал для зарегистрированного процессора:

<processors>
  <loggedin>
    <processor patch:after="*[@type='Sitecore.Pipelines.LoggedIn.CleanupUserProfile, Sitecore.Kernel']" mode="on" type="[...].LoginModeSwitcher, [ASSEMBLY]" />
  </loggedin>
</processors>

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

0 голосов
/ 02 июня 2011

Я думаю, что самым простым решением на сегодняшний день было бы просто прокрутить собственную страницу входа.Ничто из того, что делает вход по умолчанию в Sitecore, не позволяет сделать это очень легко на новой странице ... то, что автоматически перенаправляет пользователя на соответствующий элемент в редакторе контента.так же, как первое предложение mstiles, за исключением процесса автоматического входа.Это всего лишь брешь в системе безопасности, которая не произойдет ... не делайте этого.

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