2011-06-01 19 views
3

我正在尋找鏈接到Sitecore客戶端(不是外部網站)中的項目的最佳方式。該鏈接將嵌入到斷鏈報告電子郵件中。用戶應該能夠點擊鏈接並啓動Sitecore內容編輯器,並在樹中自動選擇該項目。優美的方式鏈接到Sitecore客戶端項目?

我在他的博客here上發現了馬克烏爾西諾的解決方案,但不幸的是,它只有在您正在積極登錄Sitecore(否則,它會在登錄後將您帶到Sitecore桌面)的情況下起作用。

我正在Sitecore.NET 6.4.1(REV 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); 
    } 
} 

回答

2

下面是我用之前:

有在web.config中Sitecore的一個選項,通過原始的URL發送。設置在使用該補丁文件

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

然後,我加入另外的處理器進入CleanupUserProfile後的loggedIn處理器讀取查詢字符串參數(多個),並重定向到相應的頁面。無論用戶是否先前登錄過,該處理器都會被調用。

登錄處理器爲我定製的簽名是

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> 

在電子郵件中的鏈接網站的鏈接包括一個querystring參數告訴我的代碼,我們想在登錄後重定向和其他查詢字符串參數,告訴它在哪裏重定向用戶。

+0

這樣看起來非常非常接近。但我不明白URL會傳遞給處理器。如果我知道想要在Sitecore客戶端中鏈接到的項目的ID,我會傳入哪個URL? – 2011-11-08 15:35:45

+0

@corey,你可以傳遞你想要的任何東西作爲url,它取決於你的處理器代碼來解釋url的參數。因此,您可以將項目的GUID包含爲參數,例如您的查詢字符串可能看起來像'&myItem = [GUID]&myOpen = workbox',處理器將查找參數myItem和/或參數myOpen。並用它們來完成它需要做的任何邏輯。 – Marko 2011-11-10 01:20:48

3

你會想有一個單一的頁面,你所有的鏈接指向哪個進程的登錄,然後重定向到Sitecore。您需要向電子郵件中的鏈接的url添加一些查詢字符串參數,例如:itemID和serialCode。我強烈建議,由於做這種事情會帶來安全隱患,因此您需要設置一個加密代碼,該代碼可以在未加密的鏈接中發送,並針對該特定報告的存儲代碼進行檢查,以確保嘗試登錄的人員是你發送郵件給誰的。在檢查代碼後,您將訪問您可以存儲在web.config中的低級別用戶憑據以自動登錄。然後,您將使用itemID來確定在內容編輯器中打開哪個項目。 (請注意,跳過Sitecore的登錄過程將會打開您應該準備好抵禦的安全漏洞)

另一個更簡單和更安全的選項是將新報告的摘要和通知以及指向Sitecore登錄頁面的鏈接。然後在Sitecore中創建一個自定義應用程序來創建和查看這些報告。電子郵件的預期收件人可以登錄並使用此應用程序在收到通知時查看該應用程序。這與日誌查看器的工作方式類似。一旦進入Sitecore的桌面模式,他們可以在內容編輯器和您的自定義應用程序之間切換,然後可以獲得所有項目的鏈接列表。這當然取決於客戶的靈活性。

+0

+1對於Sitecore應用程序想法 – 2011-06-01 18:47:21

0

我認爲到目前爲止最簡單的解決方案就是簡單地推出自己的登錄頁面。沒有什麼是默認的Sitecore登錄正在做的事情,你不能在一個新的頁面很容易做到自己......然後自動將用戶重定向到內容編輯器中的相應項目。

這與mstiles的第一個建議基本相同,減去自動登錄過程。這只是一個等待發生的安全漏洞......不這樣做。