Как обезопасить действие контроллера Sitecore (MVC) только для пользователей, вошедших в систему Sitecore?

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

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

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

1 ответ

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.

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