2016-02-23 3 views
0

Я работаю в приложении Sitecore MVC. Я написал методы Action для отображения метаинформации Sitecore Item. Метод действия, который я написал в проекте Sitecore MVC, развертывается на CM и CD.Как защитить действие Sitecore Controller (MVC) только для Sitecore?

Я хочу ограничить свой метод действий на CD-сайте и продолжать использовать его на сайте CM.

Использование: Sitecore 7,5, MVC4

ответ

2

dnstommy почти нет - только незначительные изменения в его реализации получит вас там. Атрибут HttpPost не требуется.

public ActionResult MetaData() 
{ 
    if (Sitecore.Context.IsLoggedIn == false) 
    { 
     return new EmptyResult(); 
    } 

    // build your model and return to the view 
    return View(); 
} 

Возвращение EmptyResult() такое же, как рендеринг пустая строка в представлении, так что это будет, как если визуализация не существует на этой странице.

Если вы хотите дополнительно заблокировать вещи до определенной роли, вы можете использовать Sitecore.Context.User.IsInRole("ROLE NAME"), чтобы проверить это.

Примечание о Sitecore.Context.ContentDatabase - это установлено в masterесли вы находитесь в shell сайте. То есть, если вы находитесь в редакторе содержимого.

Если вы просматриваете сайт на сервере CM, или предварительный просмотре сайта, SiteContext будет вашего определения сайта, и если вы установили content свойство будет включены, в противном случае он будет нулевым. Таким образом, не безопасный чек, чтобы узнать, находитесь ли вы на сервере CM.

+0

[ссылка] (http://www.sitecore.net/learn/blogs/technical-blogs/morten-ljungberg-sitecore-whats-new/posts/2015/08/adding-a-custom-buttontoto -the-ribbon.aspx) Я следил за вышеуказанным блогом и создал кнопку. При нажатии кнопки я открываю новую страницу 'SheerResponse.Eval (" window.open ('/ app/Presentation/Detail? Itemid = "+ context.Items [0] .ID.ToString() +" & db = "+ context.Items [0] .Database.ToString() +" ',' _blank ') ");' Я всегда получаю анонимность из контекста. – Sakthivel

Смежные вопросы