Вы не авторизованы для просмотра этой страницы: Аутентификация JWT для WP REST API с плагином MemberPress с использованием WordPressPCL - PullRequest
1 голос
/ 04 октября 2019

Попытка использовать аутентификацию JWT для WP REST API с помощью WordPressPCL API.

Удалось аутентифицировать и публиковать как публикации, так и страницы на сервере WordPress с помощью WordPressPCL. Чтобы ограничить доступ только для платящих участников, я планировал использовать MemberPress. Я создал специальную категорию для поста и опубликовал их как таковые. Я настроил правило в MemberPress, чтобы предоставить доступ только подписчикам.

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

Проблемав том, что когда я пытаюсь сделать то же самое с помощью WordPressPCL, хотя я правильно авторизован с точки зрения JWT / WordPress, у меня нет доступа к контенту. Похоже, что MemberPress блокирует авторизованного пользователя, заходящего через WordPressPCL, но разрешает доступ при заходе через веб-браузер.

То же самое происходит, когда я пытаюсь опубликовать страниц вместо сообщений. Я должен также упомянуть, что я могу загружать все метаданные сообщений, но не содержимое каждого сообщения, которое приводит меня к «Вы не авторизованы для просмотра этой страницы».

Приведенный ниже код извлекает все сообщения с определенным заголовком и определеннымкатегория но myPosts.Content.Rendered == "Вы не авторизованы для просмотра этой страницы" для всех сообщений.

 try
        {
            WordPressClient client = await GetClient(clientURL,userName,password);
            if (await client.IsValidJWToken())
            {
                var posts = await client.Posts.GetAll();
                var myPosts = posts.Where(p => p.Categories[0] == category && p.Title.Rendered == title);
            }

...

Я пробовал подобноевещь без JWT. Я могу аутентифицироваться, но не могу получить содержимое страницы:


            CookieContainer cc = new CookieContainer();
            var request = (HttpWebRequest)WebRequest.Create(loginUri);
            request.Proxy = null;
            request.AllowAutoRedirect = false;
            request.CookieContainer = cc;
            request.Method = "post";

            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = requestData.Length;

            using (Stream s = request.GetRequestStream())
                s.Write(requestData, 0, requestData.Length);

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                foreach (Cookie c in response.Cookies)
                    Console.WriteLine(c.Name + " = " + c.Value);
            }

            string newloginUri = "http://localhost/myWP/myPostforToday/";
            HttpWebRequest newrequest = (HttpWebRequest)WebRequest.Create(newloginUri);
            newrequest.Proxy = null;
            newrequest.CookieContainer = cc;
            using (HttpWebResponse newresponse = (HttpWebResponse)newrequest.GetResponse())
            using (Stream resSteam = newresponse.GetResponseStream())
            using (StreamReader sr = new StreamReader(resSteam))
                File.WriteAllText(@"retrievedpage.html", sr.ReadToEnd());

Я подозреваю, что правила MemeberPress ограничивают доступ, но я не смог найти никакого решения. Некоторые рекомендации о том, как справиться с этим (с участием или без участия MemberPress), будут очень признательны.

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