在我实现自定义角色提供程序时,我遇到了这两种方法
public override string[] GetUsersInRole(string roleName) {}
public override string[] FindUsersInRole(string roleName, string usernameToMatch) {}
这些不一样吗?您是否提供角色并获取该角色中的所有用户?实际上我甚至不知道FindUsersInRole中usernameToMatch的用途是什么...我的理解是应该返回多个用户,但这不会限制它为一个吗?
答案 0 :(得分:2)
如果我记得正确GetUsersInRole
将获得具有该角色的所有用户。这是它执行的aspnetdb
sql查询:
SELECT u.UserName
FROM dbo.aspnet_Users u, dbo.aspnet_UsersInRoles ur
WHERE u.UserId = ur.UserId AND @RoleId = ur.RoleId AND u.ApplicationId = @ApplicationId
ORDER BY u.UserName
在FindUsersInRole
中,您通过角色名称和用户名模式发送。该方法将返回与用户名匹配的用户。以下是此方法的aspnetdb
sql:
SELECT u.UserName
FROM dbo.aspnet_Users u, dbo.aspnet_UsersInRoles ur
WHERE u.UserId = ur.UserId AND @RoleId = ur.RoleId AND u.ApplicationId = @ApplicationId AND LoweredUserName LIKE LOWER(@UserNameToMatch)
ORDER BY u.UserName
因此这两种方法有两种不同的功能。