按角色

时间:2017-04-07 03:20:12

标签: ios swift amazon-web-services amazon-cognito

我一整天都在寻找如何做到这一点现在可以利用。

假设我的用户池中有两个用户,John Admin和Jim User。我有一个视图控制器,我希望John Admin可以访问,但不能访问Jim User。问题是我不知道如何在我的应用程序中区分John和Jim。

有没有办法知道John Admin在我的管理员组/角色中,但Jim不在?

编辑: 询问用户属性给了我:

{"UserAttributes": [
  { "Name": "sub", "Value": "NUMBERS"},
  { "Name": "email_verified", "Value": "true"},
  { "Name": "phone_number_verified", "Value": "false"},
  { "Name": "phone_number", "Value": "NUMBERS"},
  { "Name": "email", "Value": "EMAIL"}],
 "Username": "johnadmin"}

2 个答案:

答案 0 :(得分:1)

我使用属性解决了它,因为IdentityID没有像我想的那样显示嵌入的组。

var pool: AWSCognitoIdentityUserPool?
var user: AWSCognitoIdentityUser?

在我感兴趣的方法中:

if let strongUser = self.user {
    strongUser.getDetails().continueOnSuccessWith { (task) -> AnyObject? in
        DispatchQueue.main.async(execute: {
            if let response:AWSCognitoIdentityUserGetDetailsResponse = task.result {
                for attr in response.userAttributes! {
                    if attr.name == "custom:privilege", attr.value == "admin" {
                        self.adminButton.isHidden = false
                        return
                     }
                 }
             }
              self.adminButton.isHidden = true
        })
        return nil
    }
} else {
    adminButton.isHidden = true
}

缺点是,虽然未登录,但应用程序无法写入自定义属性,因此我使用AWS-CLI来推广用户:

aws cognito-idp admin-update-user-attributes --user-pool-id <POOLID> --username <USERNAME> --user-attributes '{"Name":"custom:privilege","Value":"admin"}'

答案 1 :(得分:0)

您的用户模型应包含一些属性,以便您根据角色区分用户。 E.g

struct User {
   var name = ""
   var role = "User" // you can use enum here or anything else you want
}

用户登录后,您应将此属性设置为正确的值。 在呈现视图控制器之前,您应该检查此属性并决定是否显示此视图控制器