我的asp.net mvc网站需要某种授权,但它与通常的用户概念和会员资格有很大不同。 它将更多地用于首选项,然后用于实际身份验证。没有任何密码的帐户应该是可能的(并且最初将是唯一的类型),并且一个帐户也可以被多个用户同时使用。例如,根据用户组,某个区域的所有用户都可以获得共享帐户。 这是客户(营销部门)的决定,不适合讨论。
某个目标网页会(仅)在网址中加载一个userId,该网址会加载一个帐户,该帐户又会链接到一个可以在整个网站其余部分使用的偏好设置。
如果用户未在目标网页上启动或发送的accountId与系统中的记录不匹配,则会为他/她分配具有默认首选项的默认帐户。
我在考虑不重新发明轮子(有人应该找到一个新的表达式)并使用asp.net Membership系统。 但整个系统基于所需的密码,电子邮件和每个用户的单个会话,这些都是我无法提供的。 因为情况有点不同寻常,我认为会有一个自定义的MembershipProvider等。但似乎这个要点是继承常规的会员类。这些类的方法都需要我不需要的东西。
任何建议
答案 0 :(得分:1)
您可以使用标准的会员提供程序,并使用内置的.Validate()方法为所有帐户发送用户名和密码,而不需要身份验证。
有两个不同的用户控件1用于“验证登录密码”和一个用于“无密码帐户”,每个用户使用成员登录,但后者需要在成员字段上设置“公共”帐户=真/ 1“
祝你好运,看起来像一个有趣的项目,看到结果会很酷;)
顺便说一句,您不需要共享会话,或者您可以,只是将会话存储在数据库中并将会话映射到用户而不是cookie,可能有用吗?
根据要求,我将详细说明不同的用户控件。简单地说,我将有2个控件,一个可能称为GlobalLogin,另一个称为UserLogin,其中GlobalLogin显示一个只有用户名的表单,当提交时,这将触发一个函数,如前所述,它使用一个调用Validate方法的函数。会员提供者,带有预先设定的密码。
作为反映,请参阅所有“未使用密码登录” - 用户匿名并以相同方式对待它们,唯一不同的是他们可以访问用户特定区域。此控件还需要检查数据库中的某个字段是否已设置,例如“允许全局使用的无密码帐户”字段,在这种情况下,bit / boolean必须为true才能接受此登录。
现在另一部分是处理受密码保护的帐户的控件,这需要用户名和用户名。密码,这将使用这些设置调用验证。现在,请记住,当使用密码登录时,您可以更改密码,这不应该使用全局帐户,因为那时您的全局密码将无效:)
答案 1 :(得分:-1)
http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx有关会员提供者的详细信息。基本上,您需要创建新的提供程序,或从现有派生程派生,并重载ValidateUser方法以始终返回true。