跳到主要内容

未登录

CloudBase 允许客户端在未登录的情况下调用 CloudBase 的资源,开发者可以配合安全规则限制未登录对资源的访问权限。

开通流程

第 1 步:开启未登录

登录 云开发 CloudBase 控制台,在 登录授权 中,将未登录一栏打开或关闭。

开启未登录

第 2 步:添加安全域名(可选)

Web 应用需要将域名添加到 CloudBase 控制台的 Web 安全域名列表中,否则将被识别为非法来源。

使用流程

第 1 步:设置自定义安全规则,放通未登录访问

您需要使用自定义安全规则,来放通未登录模式下的资源访问。

注意

基于安全性的考虑,基础的四种权限设置下,均不允许未登录进行访问

例如,您可以这样设置云数据库的权限:

{
"read": "doc._openid==auth.openid || auth == null"
}

在原始私有读 doc._openid==auth.openid 的基础上,允许了所有未登录用户进行读资源。详细可查看 编写安全规则

第 2 步:初始化 SDK 发起调用

import cloudbase from '@cloudbase/js-sdk';

const app = cloudbase.init({
env: 'xxxx-yyy';
});
app.auth(); // 需初始化,但无需传入任何参数

SDK 初始化完成后可以正常发起云开发资源的调用。

注意
  1. tcb-js-sdk 在 1.9.0 版本(包含)之后支持在未登录模式下调用资源,之前的版本必须在登录有效期内进行资源调用;
  2. 在未登录模式下写入的数据(云数据库、云存储),都将成为无主数据,即数据上不会自动包含相应的身份标识字段。

常见问题

  • 匿名登录与未登录有什么区别?

    从 C 端用户的角度来讲:

    • 匿名登录和未登录在上手使用上没有任何区别,都无需注册;
    • 未登录场景下无法产生私有数据,数据在所有未登录用户间共享,单个用户没有特征标识;
    • 与匿名登录相比,未登录无法转为注册登录,未登录期间生成的数据无法自动的过渡到注册登录的用户上。

    从应用开发者的角度来讲:

    • CloudBase 匿名登录产生的匿名用户本质上是一个有效用户,拥有唯一的用户 ID。从而可以为其创建私有的 云数据库云存储 数据,以及配合 安全规则 制定个性化的访问策略;
    • 未登录模式是纯粹的无登录态访问,该模式下的访问都不会进入用户的追踪统计;
    • 未登录的用户默认权限下无法使用任何 CloudBase 的服务和资源,需要通过安全规则对需要的资源访问进行放通。同时由于无法界定未登录用户的唯一性,在开发者自身的服务体系下也无法创建私有数据和个性化策略。
  • 已经开启未登录开关但访问资源仍报权限错误

    因为未登录访问是一种低安全,公开的访问方式,为保证开发者云资源的安全性,系统限制需要同时开启未登录开关,以及显式地通过安全规则放通未登录模式的资源访问,未登录模式下才可以真正访问云资源,两步相互独立,又缺一不可。