我正在实现一个自定义 ASP.NET 角色提供程序,我想知道如果传入的用户已经在传入的角色中,它的AddUsersToRoles
方法是否应该抛出一个。默认的 Microsoft SQL Server 角色提供程序会表现出这种行为,即使微软官方文档不推荐它:ProviderException
SqlRoleProvider
异常详细信息:System.Configuration.Provider.ProviderException:用户“myTestUser”已经在角色“myTestRole”中。
我认为我的提供者在这种情况下不抛出异常而只是在给定用户已经处于给定角色时继续前进会很有用;这样调用代码就不需要担心重复了。但是,在这种情况下,是否存在依赖于抛出异常的现有角色提供程序使用代码?如果有,是否应该这样做,因为微软自己似乎并不推荐它?
如果我确实想实现一个类似于AddUsersToRoles
在用户已经处于角色时不会引发异常的方法,我可以看到 3 种替代方法:
- 将其实现为
AddUsersToRoles
并且具有与默认不同的行为SqlRoleProvider
。 EnsureUsersInRoles
在我的角色提供者类中将其实现为新方法,并使用((MyProvider)(Roles.Provider)).EnsureUsersInRoles()
.- 只需在一个完全独立的类中实现它。