在swift中为新的Parse用户设置ACL

时间:2015-06-17 03:49:52

标签: swift parse-platform acl

我目前遇到的问题是用户可以访问我应用中其他用户的对象。

我知道当用户在登录应用程序时创建对象时如何设置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"
     }

2 个答案:

答案 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创建新用户。