我试图在我的Parse应用程序中保护云功能。此功能不会创建对象或任何东西。它只调用外部API并返回结果。但是,为了确保安全,我尝试使用iOS SDK创建匿名用户,如下所示:
PFUser.enableAutomaticUser()
print(PFUser.currentUser())
输出
Optional(<PFUser: 0x7fd3535570c0, objectId: new, localId: (null)> {})
似乎正在创建用户。但是当我使用PFCloud
对象发出请求时,我在Cloud中的解析函数会获得一个空用户:
PFCloud.callFunctionInBackground("<endpoint>", withParameters:[<params_dict>], block: {(result) -> Void in
print(result)
})
控制台日志的结果显示为"user":null
。有谁知道我可能会缺少什么?另外,这是确保请求仅来自我的iOS客户端而不是来自其他来源的最佳方法吗?
感谢。
答案 0 :(得分:1)
您的匿名用户是#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
my $start_time=Time::Piece -> new(1448841600);
print $start_time,"\n";
print $start_time -> epoch,"\n";
print $start_time -> strftime ( "%Y-%m-%d %H:%M:%S" ),"\n";
#nb - you can also use localtime/gmtime:
my $end_time = gmtime(1448863200);
print $end_time,"\n";
print $end_time->epoch,"\n";
,因为除非您保存该用户或与其相关的对象,否则它将不存在于服务器上。来自Parse documentation:
也可以自动为您创建匿名用户 需要网络请求,以便您可以开始使用您的网络 应用程序启动时立即用户。启用时 在应用程序启动时自动创建匿名用户,[PFUser currentUser]永远不会是零。 将自动创建用户 在云中第一次与用户或任何具有关系的对象 用户已保存。在此之前,用户的对象ID将为零。
此外,您无法简单地检查请求是否来自iOS客户端。 REST系统的重点在于服务器不保留任何状态,它只响应来自不同源的请求。源必须在每次请求时发送其凭证(通常是在登录期间由服务器发布的安全令牌中)。在验证请求之前,服务器会验证令牌是否为正版并且未被篡改。 Parse为您提供用户身份验证,使您可以轻松验证登录用户是否正在请求某些内容。然后,您可以在此基础上构建额外的安全措施,以确保只允许某些用户访问某些数据。