我安装了贝加尔湖服务器,我有两个用户:鲍勃和爱丽丝。我想与爱丽丝共享鲍勃的日历。
我尝试访问my.baikal/dav.php/calendars/bob/calendar-to-share/(即 Sabre/Dav 界面)并使用“共享此资源”表单向 Alice 授予访问权限,但没有成功。
我尝试使用:
mailto:alice@email.dd该d:invite节点现在看起来像:
<d:sharee>
<d:href>/dav.php/principals/bob</d:href>
<d:prop/>
<d:share-access>
<d:not-shared/>
</d:share-access>
<d:invite-accepted/>
</d:sharee>
<d:sharee>
<d:href>/dav.php/principals/alice</d:href>
<d:prop/>
<d:share-access>
<d:read-write/>
</d:share-access>
<d:invite-invalid/>
</d:sharee>
<d:sharee>
<d:href>mailto:alice@email.dd</d:href>
<d:prop/>
<d:share-access>
<d:read-write/>
</d:share-access>
<d:invite-accepted/>
</d:sharee>
Run Code Online (Sandbox Code Playgroud)
但爱丽丝无法访问鲍勃的日历。
我正在为我的项目使用 sabre/dav 库,但在阻止默认的 Windows WebDAV 客户端“删除”不应删除的文件时遇到了一些困难。服务器部分的实现是可以的,并且其他客户端(Finder、CyberDuck)显然会抛出并确认禁止状态,这些客户端会以禁止的错误中止用户的删除过程。在 Windows 客户端上返回相同的状态,但它似乎只是“删除”了服务器端仍然可用的文件。通过刷新文件夹,这些文件再次可见。似乎 Win 客户端只是忽略了禁止的响应并虚拟删除了文件夹,因此它不再可见。
更大的问题是,如果出于某种原因您决定删除一个文件夹,其中下面有受保护和不受保护的文件/文件夹,它会删除所有不受保护的文件/文件夹,因为它无法确认第一个(或任何)禁止响应。其他 WebDAV 客户端检测到这一点并停止删除过程,因此指定的文件夹及其子文件夹/文件不会受到影响。
尝试删除文件夹或文件时的禁止响应示例:
HTTP/1.1 403 Forbidden
Server: nginx/1.8.0
Date: Wed, 29 Jul 2015 13:55:11 GMT
Content-Type: application/xml; charset=utf-8
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
X-Powered-By: PHP/5.4.41-1~dotdeb+7.1
X-Sabre-Version: 2.1.3
Vary: Accept-Encoding,User-Agent
Content-Length: 320
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:sabredav-version>2.1.3</s:sabredav-version>
<s:exception>Sabre\DAV\Exception\Forbidden</s:exception>
<s:message>Permission denied to delete node</s:message>
</d:error>
Run Code Online (Sandbox Code Playgroud)
在 Win8.1 x86 上测试了默认的 Win 客户端。
知道如何强制 Win WebDav 客户端检测禁止响应并终止删除过程吗?
谢谢。
我使用Laravel WebDAV 包装器,它使用Saber将媒体上传到使用 Nginx 进行基本身份验证的 WebDAV 服务器,但根据文档中设置的默认包,我在以下位置使用了此配置filesystem.php:
'dav' => [
'driver' => 'webdav',
'baseUri' => 'https://dav.example.com/',
'userName' => 'test',
'password' => 'test',
],
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用 Laravel Storage 存储文件时出现此错误:
无法进行必要的数据回滚
我开始在本地环境中使用SabreDav创建自己的测试服务器,并且一切正常。
现在,我想我的配置迁移到我的生产Web服务器和我遇到各种各样的麻烦与PDO认证的描述在这里。
我成功创建了数据库,并且无需身份验证即可浏览主体节点(这意味着数据库连接正常)。
添加服务器pdo身份验证插件时,尽管我使用了默认值,但它会不断询问登录名/密码,就好像登录名/密码错误。
我测试了许多方案,但无法弄清楚为什么它会阻止我继续登录-因为我很确定login / pwd是正确的!
测试场景:请参见myServer / server.php / principals / admin /中的节点(admin是在mysql脚本中创建的默认用户,如此处所示)。
尝试0:成功在我的server.php中禁用身份验证
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
// -- comment out $authPlugin = new Sabre\DAV\Auth\Plugin($authBackend);
// -- comment out $server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
尝试1:在我的server.php中使用默认配置失败,并不断提示输入密码
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend);
$server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
尝试2:失败,强制server.php中的默认领域不断提示输入密码
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
$authBackend->setRealm('SabreDAV');
$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend);
$server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
尝试3:强制在server.php中强制默认领域的FAIL备用方法不断提示输入密码
$authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo);
$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend, 'SabreDAV');
$server->addPlugin($authPlugin);
Run Code Online (Sandbox Code Playgroud)
尝试4:失败,保持相同的域“ …