首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用稍微奇怪的需求实现自定义成员资格提供程序

用稍微奇怪的需求实现自定义成员资格提供程序
EN

Stack Overflow用户
提问于 2009-05-27 11:04:22
回答 1查看 1.2K关注 0票数 2

为移动用户构建一个新的移动Web平台,以便在其手机上购买和下载内容。在过去,我们使用了一种完全定制的登录机制,但我正在研究使用自定义成员资格提供程序来实现平台的下一个版本。

问题是,我们有一些稍微奇怪的“登录”机制要求,所以我不能百分之百肯定MembershipProvider是最合适的。

只是想得到一些关于以下要求的一般性反馈:“是的,会员服务提供商是一个很合适的人”或“不,你在圆孔里敲一个正方形的钉子”

要求

Implementation

  • User可能要求
  1. 用户使用“移动号码”(用户名)和"Pin“(密码)登录,这非常适合,因为他们已经用短信进行了注册和确认,并且满足了ValidateUser(string username, string password)方法,
  2. 可能只需要使用”移动号码“登录。在这种情况下,我们不会费心在我们这边进行身份验证。它减少了用户的步骤数,当我们试图对它们进行计费时,验证是由特定的操作员完成的。(运营商可以验证输入的移动号码是否与手机在到达运营商支付站点时匹配).因此,即使用户有密码,我们也需要以某种方式吓唬成员资格提供者,并让他们使用一个空白的密码。
  3. 用户根本不需要登录。在这种情况下,我们可以透明地将用户弹到一个特殊的网络运营商网页上,并且当它们透明地返回给我们时,我们将在标题中获取移动号码。在这种情况下,我们需要以编程的方式从标题中获取该数字,在后面的代码中代表它们执行登录(同样没有任何密码),用户将神奇地自动登录。

要求2和3是有点奇怪。我们基本上有三个不同的登录机制,一个成员提供者将需要满足。

  • 用户输入移动&用户只输入
  • 用户输入移动(代码后面的代码应该满足pin
  • 透明登录(代码后面完成整个登录过程)

任何人都可以从上面得到任何评论/反馈,或者对您过去做过的任何奇怪的成员提供者实现都有任何建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-06 19:40:03

我觉得能行。我们在我们的一个网站上做第三项。下面是我们用来处理它的代码块。为此,创建一个登录页面(transparentlogin.aspx或类似的内容),确保web.config文件允许匿名访问该页面,并将类似的代码放入transparentlogin.aspx页面的page_load函数中:

代码语言:javascript
复制
const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin";

if (MobileNumberFoundInHeader())
{
  string username = GetMobileNumberFromHeaders();
  // Authenticate the user behind the scenes
  System.Web.Security.FormsAuthentication.SetAuthCookie(username, false);
  System.Web.Security.FormsAuthentication.Authenticate(username, specialpassword);
}
else
{
  throw new Exception ("Mobile Number Missing");
}

然后,在ValidateUser函数中的MembershipProvider中,确保执行如下检查:

代码语言:javascript
复制
public override bool ValidateUser(string username, string password)
{
 const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin";

 bool ValidationSuccess = false;

 // If the password being passed in is the right secret key (same  
 // for all users), then we will say that the password matches the
 // username, thus allowing the user to login 
 if (password == specialpassword)
 {
   ValidationSuccess = true;
 }

 if (DoStandardUsernamePasswordVerification() == true)
 {
   ValidationSuccess = true;
 }

 return ValidationSuccess;
}

至于第二项要求,我有点困惑。接线员到底是什么?我以为我们是在用手机,用网络浏览器浏览网站。接线员在哪里?如果我提出的解决方案没有帮助,请张贴更多关于运营商的详细信息的回复。

时间

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/915141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档