我正在为客户编写一个网络应用程序。用户将拥有一个一次性密钥,他们将使用该密钥最初向应用程序标识自己。一旦应用程序验证密钥有效,它会将他们带到一个页面,在那里他们可以创建一个普通帐户以用于所有后续登录。只有在输入密钥后才能访问创建帐户页面,否则不应访问。即,使用普通帐户登录的用户不应访问它。这是使用自定义会员提供程序的 asp.net 3.0。
我的计划是根据密钥创建一个临时帐户并使用该帐户对用户进行身份验证。这允许他们访问创建用户页面(受位置标签保护),他们可以在其中创建正式帐户。然后我用他们的新帐户对他们进行身份验证并删除临时帐户。流程是:用户进入他们输入密钥的页面。如果密钥有效,我会创建临时帐户,调用 FormsAuthentication.SetAuthCookie,然后重定向到创建帐户页面。这一切都有效,虽然它看起来有点复杂。
问题是任何经过身份验证的用户都可以使用创建用户页面。我只希望它在输入密钥和创建正式帐户之间的时间内可用。所以我想我会为临时帐户创建一个特殊角色,并让 create-user 页面只能由该角色访问,而不能由其他角色访问。我创建了自己的具有特殊角色的 Principal 对象,并尝试在对临时帐户进行身份验证时进行设置,但无法使其正常工作。
我真的希望我不必为此编写自定义角色提供程序。
我怎样才能使这项工作?一定有更简单的方法!