到目前为止,我已经看到了ASP.NET角色提供程序的几个自定义实现,并且它们都符合基类要求,即基于字符串用户名完成角色检查。 (例如IsUserInRole(string username)
)。这是对角色提供者的要求是基于这个字符串用户名是用户实体的唯一密钥的事实吗?
我的用户类使用GUID Id作为用户实例的uniqe标识符。
P.S。我知道在设置身份验证cookie时我需要使用它的GUID ID。只是想确保我理解用户名角色关联背后的动机。
答案 0 :(得分:0)
最有可能的原因是从IPrincipal获取用户名非常容易。因此,您可以轻松地执行IsUserInRole(User.Identity.Name)
更重要的是,FormsAuthentication系统必须能够依赖IPrincipal在授权级别进行验证,唯一可用的信息是用户名。