1

我的 asp.net mvc 站点需要某种授权,但它与通常的用户概念和成员身份不同。它将更多地用于首选项,然后实际用于身份验证。没有任何密码的帐户应该是可能的(并且最初将是唯一的类型),并且一个帐户也可以同时由多个用户使用。例如,根据用户组的不同,某个地区的所有用户都可能获得一个共享帐户。这是客户(营销部门)的决定,不予讨论。

某个登录页面(仅)在 URL 中使用一个用户 ID,该用户 ID 将加载一个帐户,该帐户又具有与其链接的一些首选项,可在整个站点的其余部分中使用。
如果用户没有从登陆页面开始或发送的 accountId 与系统中的记录不匹配,他/她将被分配具有默认偏好的默认帐户。

我正在考虑不要重新发明轮子(有人应该为此找到一个新的表达方式)并使用 asp.net 会员系统。但是整个系统基于每个用户所需的密码、电子邮件和单个会话,这些都是我无法提供的。因为情况有点不合常规,我认为自定义 MembershipProvider 等会到位。但它的要点似乎是从常规的 Membership 类继承。这些类的方法都需要我不需要的东西。

有什么建议么

4

2 回答 2

1

您可以使用标准的会员资格提供程序并使用内置的 .Validate() 方法发送用户名和密码,该密码是所有帐户的“标准”,无需身份验证。

有 2 个不同的用户控制 1 个用于“使用密码验证登录”和一个用于“无密码共享帐户”,每个都使用 Membership-login 但后者需要在成员的字段上设置一些“公共帐户 = True” / 1"

祝你好运,似乎是一个有趣的项目,看到结果会很酷;)

顺便说一句,您不需要共享会话,或者您可以将会话存储在数据库中并将会话映射到用户而不是 cookie,可能有效吗?


根据要求,我将详细说明不同的用户控件。简而言之,我将有 2 个控件,一个可能称为 GlobalLogin,一个称为 UserLogin,其中 GlobalLogin 显示一个只有用户名的表单,提交时这将触发一个函数,如我之前所述,该函数调用 Validate 方法会员提供者,具有预设密码。

作为反思,将所有“未使用密码登录”的用户视为匿名用户并以相同的方式对待他们,唯一不同的是他们可以访问特定于用户的区域。此控件还需要检查是否设置了数据库中的某个字段,例如“允许没有密码的全局使用帐户”字段,在这种情况下,位/布尔值必须为真才能接受此登录。

现在到另一部分,处理受密码保护的帐户的控件,这需要用户名和密码,并使用这些设置调用验证。现在,请记住,使用密码登录时,您可以更改密码,这不应该使用全局帐户来实现,因为那样您的全局密码将不起作用:)

于 2008-12-17T09:26:30.450 回答
-1

http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx上有关于会员资格提供者的详细信息。基本上,您需要创建新的提供者,或从现有提供者派生,并重载 ValidateUser 方法以始终返回 true。

于 2008-12-17T16:54:29.763 回答