devbean / obsidian-wordpress

An obsidian plugin for publishing docs to WordPress.
https://devbean.github.io/obsidian-wordpress
Apache License 2.0
158 stars 22 forks source link

REST API方式教程应该提示大家看下 miniorange那个插件设置好后Test Configuration这一栏的api网址 #18

Closed lingchen-jiager closed 1 year ago

lingchen-jiager commented 1 year ago

image

我试了好久,死活登陆不上去,最后配合fiddler抓包看请求的网址,才发现问题。 我的api是”我的域名/index.php/wp-json/wp/v2/posts“ 如果直接输域名就少个”index.php“,就访问不到。需要输入”https://www.xxx.com/index.php/“才能正常登录。 另外提示大家一下setting里面最后的”/“需要输入,不输入,拼接的字符串成了/index.phpwp-json/wp/v2/posts,也登陆不上。

devbean commented 1 year ago

感谢指出。现在已经做了修改,会在发布时判断 setting 里面 url 是不是以 / 结尾。请方便的话帮忙测试下。感谢!

PS:/index.php 可以通过 nginx 或者 apache 的 URL 重写去除,可以直接使用域名,而不需要显式写出 /index.php

lingchen-jiager commented 1 year ago

我刚刚试了一下,我还是使用的REST API这个模式。 setting里面的url末尾加不加“/”确实不影响正常登陆了。 但是好像出现了新问题。

问题一

简言之就是记住用户名和密码功能出问题,虽然能显示,但是点登录会提示"未设置用户名密码"。 image 具体表现: 我勾选了记住username和password,填入用户名和密码,可以正常登录,重新打开obsidian,在登陆界面,明明显示了用户名和密码,不知道为啥点击登录会弹出"未设置用户名密码"。清空用户名和密码框重新填写就又能登录。但是如果再重开obsidian,虽然在用户名密码框里显示了之前填入了的信息,点登录依然会弹出"未设置用户名密码",还得重新输入用户名和密码。

问题二

您说可以使用nginx的url重写去除index.php,我还没尝试。但是我下好这个插件新版本后,在只填写了域名,没有写index.php的情况下,点登录,不像上一个版本一样毫无提示,给的提示是”用户名或者密码错误“。但是错误类型提示的不对,我的username和password是正确的,应该是因为没写index.php导致字符串拼接后的api路径不正确。 image

另外我还有两个问题想要请教:

一、 rest api这种方式应该不用安装miniorange插件就可以使用吧?我尝试过在关掉miniorange插件的情况下使用您这个插件登录发表也是可以登陆的,但是那样的话用户名和密码不是wordrpress后台的密码,而是要在wordpress后台>用户>个人资料里面申请应用程序名和密码。 image

而且用fiddler抓包看提交的数据也是把应用程序名和密码使用base64编码并提交。”不用miniorange插件直接用应用程序名和密码登录“和”安装miniorange启用基本认证使用wordpress后台密码登录"相比,这两种方式比较起来后者的安全性更高吗,为什么您会推荐再额外安装这个插件呢? 二、 我看简睿学堂的视频和其他博主的视频推荐插件的时候都是直接在setting里面加域名就ok,他们也没介绍额外的nginx设置呀,为啥我的还需要加上index.php才能登录,是wordpress版本不同的原因吗?还是php版本的原因?亦或者是其他原因,如果您知道的话还望指教。我的wordpress是6.1.1版本,php比较老是7.4版本。

devbean commented 1 year ago

感谢回复!

  1. 有关用户名和密码保存的问题,我需要再测试一下。
  2. 因为您的站点没有设置 nginx 重定向,所以需要添加 index.php;应该也正因为这个原因,所以您的配置必须带有 index.php。我不知道现在您的站点是直接使用域名 xxx.com 就可以访问,还是需要使用 xxx.com/index.php 才可以访问。如果是后者的话,那就是 nginx 配置的问题,是可以通过 nginx 去除掉 index.php 这个路径的。
  3. 关于应用程序密码,我是真没注意到 WordPress 增加了在这个功能。如果这个是与插件相一致的作用的话,就不需要这个插件了。具体需要再研究一下看看。

如果没错的话,nginx 配置里面应该有类似下面的片段:

    location / {
        index  index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass   php-fpm;
        fastcgi_index  index.php;
        include        fastcgi_params;
    }

我猜您的配置可能缺少try_files这个指令。

lingchen-jiager commented 1 year ago

感谢回复。 虽然还不知道啥原因,但是我在网上搜了下“wordpress index.php”找了个回答,按照步骤设置,现在加或不加index.php都可以登陆发布文件了。是不是您那边也是加不加index.php都可以登陆呀,如果是这样的话,不如直接在默认设置里建议大家写上加上index.php,或者在默认设置还是直接写域名,作者在源码里加上index.php,省的像我这种情况的,半天找不到错误在哪里。还避免了我这种情况下,因为没加index.php导致即使输入正确密码和用户名也会弹出——”用户名或者密码错误“的问题。

另外我要提醒一下,如果要使用应用程序名和密码登录,在wordpress后台个人资料页面申请应用程序的用户名不是乱取的,我尝试了几次,应该是wordpress后台登录的用户名,也可能是所有用户中任意一个用户名都ok,但我就一个用户,所以无从测试。

devbean commented 1 year ago

有关 index.php,我觉得这是站点设置的问题,不应该由插件去做过多的判断。如果你的站点没有做伪静态,那么就自己在 URL 里面添加 index.php,否则就不需要。

另外,有关应用程序密码的问题,注意到 WordPress 生成应用程序密码的表单实际是在用户编辑的页面,因此这个应用程序密码应该是属于用户的;其作用就是为了隐藏真实的个人密码。类似微软或者 QQ 邮箱提供的应用程序密码功能。所以用户名只能是这个密码所隶属的真实用户名。

应用程序密码的支持已经添加到插件中了,可以测试一下。

lingchen-jiager commented 1 year ago

0.7.0版本,经测试:

另外我纠正一下我之前的错误,以防误导以后看到的人:

另外我要提醒一下,如果要使用应用程序名和密码登录,在wordpress后台个人资料页面申请应用程序的用户名不是乱取的,我尝试了几次,应该是wordpress后台登录的用户名,也可能是所有用户中任意一个用户名都ok,但我就一个用户,所以无从测试。

在wordpress后台个人资料页面申请应用程序的用户名可以任意取,只是在使用此插件登陆、发布文章的时候用户名要填写“登录wordpress后台的用户名”,密码就填写“应用程序密码”就ok。