为 swift 中的新 Parse 用户设置 ACL
Setting ACL for new Parse user in swift
我目前 运行 遇到一个问题,即用户可以访问我应用中另一个用户的 object。
我知道当用户创建 object 时他们已经登录到应用程序时如何设置 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"
}
您需要在 注册完成后设置 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,然后在设置后调用保存。
创建角色时也是如此,用户需要已经存在。
这是在同一个方法体内创建角色的方法
let role = PFRole(name: user.objectId!, acl: roleACL)
role.users.addObject(user)
第一次学习解析时,我建议通过 this method 创建新用户。
@DogCoffee 说的是对的,但是还有更简单的处理方法。
在 didFinishLaunchingWithOptions
函数内的应用委托中,您可以设置一个默认值,该值将始终使用适当的 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)
希望对您有所帮助。祝你好运!
我目前 运行 遇到一个问题,即用户可以访问我应用中另一个用户的 object。
我知道当用户创建 object 时他们已经登录到应用程序时如何设置 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"
}
您需要在 注册完成后设置 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,然后在设置后调用保存。
创建角色时也是如此,用户需要已经存在。
这是在同一个方法体内创建角色的方法
let role = PFRole(name: user.objectId!, acl: roleACL)
role.users.addObject(user)
第一次学习解析时,我建议通过 this method 创建新用户。
@DogCoffee 说的是对的,但是还有更简单的处理方法。
在 didFinishLaunchingWithOptions
函数内的应用委托中,您可以设置一个默认值,该值将始终使用适当的 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)
希望对您有所帮助。祝你好运!