我有一个类“User”,它由另外两个类(LocalUser和Donor)继承。我为ASP.net表单身份验证创建了一个自定义成员资格提供程序,并重写了ValidateUser()方法。在我的自定义成员资格提供程序的ValidateUser()方法中,我需要传入一个参数来知道要验证的“用户”是“LocalUser”还是“Donor”,并相应地根据数据库验证用户。问题是ValidateUser()只接受两个参数(用户名和密码)。所以我没有空间推进另一个。我想到的一件事是设置一个会话变量,但后来我正在寻找一种更清洁的方法。有什么建议吗?
答案 0 :(得分:1)
只需创建Validate
方法的重写版本,取3个参数并直接调用,如:
((MyCustomMembershipProvider)Membership.Provider).Validate( username, pass, anything );
这种方法的唯一缺点是你不能再依赖自动调用Validate
方法的双参数版本,当且仅当自动调用它时来自某个地方(例如来自asp:Login
控件)
答案 1 :(得分:0)
您可以在用户名字段中发送用户名和用户类型,然后在ValidateUser方法中解析它吗?像这样:username | userType。当然,您应该禁止在用户名字段中输入分隔符。