我目前遇到的问题是用户可以访问我应用中其他用户的对象。
我知道当用户在登录应用程序时创建对象时如何设置ACL,但我不知道如何为注册的人设置ACL。当我设置导航标题以显示用户的[" BusinessName"]列时,我会从另一个创建的用户列中收到商家名称....感谢您的帮助!!非常感谢!
@IBAction func signupFinalButton(sender: AnyObject) {
var newUser = PFUser()
newUser.username = username
newUser.password = password
newUser.email = email
newUser["FirstName"] = firstName
newUser["LastName"] = lastName
newUser["BusinessName"] = businessName
newUser["City"] = city
newUser["State"] = state
// This isn't seeming to work...
newUser.ACL = PFACL(user: PFUser.currentUser()!)
or this
newUser.ACL = PFACL(user: PFUser())
newUser.signUpInBackgroundWithBlock({ (succeed, error) -> Void in
或者我查询解析错误?我是新手。
func navTitle () {
var user = PFUser.currentUser()
var query = PFQuery(className:"_User")
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let objects = objects as? [PFObject] {
for object in objects {
self.homeScreen.title = object["BusinessName"] as! String?
}
}else {
self.homeScreen.title = "Home"
}
答案 0 :(得分:3)
@DogCoffee所说的是对的,但有一种更简单的方法来处理它。
在didFinishLaunchingWithOptions
函数内的app委托中,您可以设置一个始终使用相应ACL的默认值。您不必手动设置ACL以注册新用户,登录现有用户,保存对象等。这些都是自动的。
以下是我的应用代表中的Parse内容看起来很棒并且效果很好:
ParseCrashReporting.enable()
Parse.enableLocalDatastore()
Parse.setApplicationId("<YOUR APP ID>", clientKey: "<YOUR CLIENT KEY>")
//Always set the ACL value to the current user
PFACL.setDefaultACL(PFACL(), withAccessForCurrentUser: true)
我希望有所帮助。祝你好运!
答案 1 :(得分:2)
您需要在符号完成后设置ACL 。
所以在委托方法中,
func signUpViewController(signUpController: PFSignUpViewController, didSignUpUser user: PFUser)
// set the ACL for the newly created user
newUser.ACL = PFACL(user: PFUser.currentUser()!)
//Then you can save the user, ie saveEventaully
如果您没有使用PFSignUpViewController - 只需在signUpInBackgroundWithBlock的代码块中设置ACL,然后在设置后调用save。
当您想要创建角色时,这是相同的,用户需要已经存在。
这是在同一方法体中创建角色的方法
let role = PFRole(name: user.objectId!, acl: roleACL)
role.users.addObject(user)
首次学习解析时,我建议您通过this method创建新用户。