我一整天都在寻找如何做到这一点现在可以利用。
假设我的用户池中有两个用户,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"}
答案 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
}
用户登录后,您应将此属性设置为正确的值。 在呈现视图控制器之前,您应该检查此属性并决定是否显示此视图控制器