asp.net - RoleProvider 中这两种方法有什么区别?

标签 asp.net asp.net-membership roleprovider

当我实现自定义角色提供程序时,我遇到了这两种方法

public override string[] GetUsersInRole(string roleName) {}
public override string[] FindUsersInRole(string roleName, string usernameToMatch) {}

这不是同一个东西吗?您提供一个角色并取回该角色中的所有用户?实际上我什至不明白 FindUsersInRole 中的 usernameToMatch 的意义是什么...我的理解是应该返回多个用户,但这不会将其限制为一个吗?

最佳答案

如果我没记错的话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

因此这两种方法有两种不同的功能。

关于asp.net - RoleProvider 中这两种方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811224/

相关文章:

asp.net - 在纯 T-SQL 中生成 ASP.Net 成员(member)密码哈希

asp.net - 是否使用 ASP.NET 配置文件?

asp.net-mvc - 如何在 ASP.NET MVC 中实现基于 ID 的用户系统(成员资格、授权等)?

asp.net - 在没有(或有虚拟的)角色提供者的情况下启用角色

c# - 如何在 ASP.net MVC 5 中使用 @Html.EditorFor 自动填充表单中的字段?

c# - T-SQL:ASP.NET GridView 中选定列的动态查询

c# - response.write 不工作 asp.net

c# - 如何在http header 中包含用户ID和密码?

asp.net-mvc - 将电子邮件更改保存在ASP.NET MVC的默认成员资格提供程序中

c# - 使用自定义表的成员身份和角色身份验证