Asp.Net 身份何时创建并分配给用户?
When are the Asp.Net Identity are created and assigned to the user?
我正在努力思考 Asp.Net 身份。但不幸的是,可用的文档不是很清楚,或者我觉得它只是在我的头上:(
但是,以下是基于全天研究和阅读的高层次理解。当用户登录时,会提供一组声明。使用这些声明,您可以 enable/disable 功能。例如,如果用户声称他们的年龄是 30 岁,那么您可以允许他们查看仅限成人的内容,但如果他们声称自己是 17 岁,那么您将拒绝访问 him/her :)。此外,"Admin"、"Super Users"...等用户的角色可用于 enable/disable 访问。如果用户具有 "Admin" 角色,您可以允许他们访问 X 操作方法。
然而,有很多事情让我感到困惑,让我无法清楚地了解它。
场景
假设我想用一个控制器创建一个新的应用程序。这个控制器有两个动作方法Add
和Edit
。我猜我需要为每个用户提出两个声明
new Claim {
UserId = 10,
ClaimType = "Can Add",
ClaimValue = null
},
new Claim {
UserId = 10,
ClaimType = "Can Edit",
ClaimValue = null
}
new Claim {
UserId = 5,
ClaimType = "Can Edit",
ClaimValue = null
}
在这种情况下,Id = 10 "Can Add" 和 "Can Edit" 的用户无法编辑,但 UserId = 5 "Can Add" 的用户无法编辑。
何时创建这些声明并将其分配给用户?我是否根据需要通过手动将它们插入 AspNetUserClaims
table 来创建这些声明?我是否将它们分配给用户个人资料中的用户?
如果我以后需要添加一个新的claim,我是否需要手动将这个新的claim分配给所有用户怎么办?或者有没有办法将这些声明分配给用户可以继承的默认角色?
这可能不是一个很好的问题,但回答它会帮助我更好地理解身份。
声明应该在用户登录时设置。您不应该直接在数据库中设置它。请参阅 this post 了解何时设置声明。
声明是关于用户的信息。然后您可以使用该信息进行授权(或其他任何事情)。
请注意,您应该始终为您的 Claims
设置一个值,否则您可能 运行 进入不存在的声明错误。
我正在努力思考 Asp.Net 身份。但不幸的是,可用的文档不是很清楚,或者我觉得它只是在我的头上:(
但是,以下是基于全天研究和阅读的高层次理解。当用户登录时,会提供一组声明。使用这些声明,您可以 enable/disable 功能。例如,如果用户声称他们的年龄是 30 岁,那么您可以允许他们查看仅限成人的内容,但如果他们声称自己是 17 岁,那么您将拒绝访问 him/her :)。此外,"Admin"、"Super Users"...等用户的角色可用于 enable/disable 访问。如果用户具有 "Admin" 角色,您可以允许他们访问 X 操作方法。
然而,有很多事情让我感到困惑,让我无法清楚地了解它。
场景
假设我想用一个控制器创建一个新的应用程序。这个控制器有两个动作方法Add
和Edit
。我猜我需要为每个用户提出两个声明
new Claim {
UserId = 10,
ClaimType = "Can Add",
ClaimValue = null
},
new Claim {
UserId = 10,
ClaimType = "Can Edit",
ClaimValue = null
}
new Claim {
UserId = 5,
ClaimType = "Can Edit",
ClaimValue = null
}
在这种情况下,Id = 10 "Can Add" 和 "Can Edit" 的用户无法编辑,但 UserId = 5 "Can Add" 的用户无法编辑。
何时创建这些声明并将其分配给用户?我是否根据需要通过手动将它们插入 AspNetUserClaims
table 来创建这些声明?我是否将它们分配给用户个人资料中的用户?
如果我以后需要添加一个新的claim,我是否需要手动将这个新的claim分配给所有用户怎么办?或者有没有办法将这些声明分配给用户可以继承的默认角色?
这可能不是一个很好的问题,但回答它会帮助我更好地理解身份。
声明应该在用户登录时设置。您不应该直接在数据库中设置它。请参阅 this post 了解何时设置声明。
声明是关于用户的信息。然后您可以使用该信息进行授权(或其他任何事情)。
请注意,您应该始终为您的 Claims
设置一个值,否则您可能 运行 进入不存在的声明错误。