将其他参数传递给自定义成员资格提供程序的ValidateUser()

时间:2011-11-03 08:13:22

标签: asp.net asp.net-mvc asp.net-mvc-3 forms-authentication

我有一个类“User”,它由另外两个类(LocalUser和Donor)继承。我为ASP.net表单身份验证创建了一个自定义成员资格提供程序,并重写了ValidateUser()方法。在我的自定义成员资格提供程序的ValidateUser()方法中,我需要传入一个参数来知道要验证的“用户”是“LocalUser”还是“Donor”,并相应地根据数据库验证用户。问题是ValidateUser()只接受两个参数(用户名和密码)。所以我没有空间推进另一个。我想到的一件事是设置一个会话变量,但后来我正在寻找一种更清洁的方法。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

只需创建Validate方法的重写版本,取3个参数并直接调用,如:

((MyCustomMembershipProvider)Membership.Provider).Validate( username, pass, anything );

这种方法的唯一缺点是你不能再依赖自动调用Validate方法的双参数版本,当且仅当自动调用它时来自某个地方(例如来自asp:Login控件)

答案 1 :(得分:0)

您可以在用户名字段中发送用户名和用户类型,然后在ValidateUser方法中解析它吗?像这样:username | userType。当然,您应该禁止在用户名字段中输入分隔符。