1

In my JSON controller I want to check the access right from the User.

My code looks like this

public class MyController : SitecoreController
{

    public static bool CheckAccessRight()
    {
        if (Sitecore.Context.User.IsInRole("sitecore\\Sitecore Client Users"))
        {
            return true;
        }
        if (Sitecore.Context.User.IsAdministrator)
        {
            return true;
        }
        return false;
    }

    [System.Web.Http.HttpGet, System.Web.Http.HttpPost]
    public ActionResult DoSomethings(int page)
    {
      if (!CheckAccessRight())
      {
        return new JsonResult { Data = "access denied", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
      }
      return new JsonResult { Data = "my data", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }
}

The controller is registered in the initialize Pipeline. simiar to the documentation https://doc.sitecore.com/developers/91/sitecore-experience-management/en/use-mvc-routing.html. Works on older versions of Sitecore but in Sitecore 9.1 update-1 the Sitecore.Context.User gives not the logged in user but gives extranet\Anonymous

How can I get the actual user back?

Note: it fails in Sitecore 9.1 initial version and Sitecore 9.1 update-1. works on 9.0

  • 2
    You might find this useful: sitecore.stackexchange.com/q/17485/237 – Gatogordo Apr 9 '19 at 13:30
  • Thank @Gatogordo it works when I add ?sc_site=shell to the Url, I had already try it with the siteSwitcher to shell but that fails. – Jan Bluemink Apr 9 '19 at 13:35
  • Does this fail for GET and POST calls? – Chris Auer Apr 9 '19 at 16:01
  • Post and GET fail, but for me it resolved with adding shell to the query string – Jan Bluemink Apr 9 '19 at 19:29
0

Add ?sc_site=shell to the url, in the shell context the Sitecore user will be correct.

See also IsAdministrator check no longer working on Sitecore 9.1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.