首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网站和移动应用的会员制

网站和移动应用的会员制
EN

Stack Overflow用户
提问于 2012-09-16 02:49:13
回答 1查看 527关注 0票数 1

我目前正在从事一个项目,将有一个网站和移动设备的应用程序。我需要一种方式,让用户登录到我的网站,以查看某些领域。我知道我将需要建立一个WCF服务,但我被困在如何继续创建用户。我原本打算使用内置的.NET会员资格,但我读得越多,如果我有很多用户,这听起来就越糟糕。然后,我在考虑建立一个新的提供者,它将为我提供内置.NET会员的所有功能,但我将对所有事情有更多的控制。最后一个想法是建立一个完整的会员系统,但我担心我会失去内置的.NET会员系统的功能。我基本上只是在寻找一个人给我指出正确的方向,并解释为什么。

现在我认为处理这个问题的最好方法是建立一个完整的会员系统。我在想,我将通过后端的WCF访问我的数据,我的网站会调用它,RESTful服务也会调用它。我现在还不知道有什么方法可以通过WCF验证用户的用户名和密码。

感谢您的所有投入。

EN

回答 1

Stack Overflow用户

发布于 2012-09-16 03:21:29

我们在我们的几个项目中都做了这件事,下面是我们如何完成它的总结。请记住,这只是一种方法,我们也已经成功地编写了自己的成员提供程序。

我们有3个主要项目:

服务类library

  • WebApp.project - MVC Application

  • API.project -
  1. Data.project

我们使用内置的.NET成员资格提供程序,因为它开箱即用。这为我们提供了基本的注册、密码更改、角色管理,以及在我们的MVC和API项目中基于简单控制器的角色权限和访问控制。

默认成员资格提供程序将使用其自己的表来存储用户数据。

然后,我们创建自己的用户和配置文件表以及数据结构,其中包含一个指向用户的.NET membershipId的外键。这使我们可以灵活地对用户配置文件执行所有应用程序特定的操作,同时仍然允许我们访问默认提供程序。

在MVC项目中,身份验证非常简单,您现在可以使用.NET成员方法通过用户名和密码进行身份验证:

代码语言:javascript
复制
if(Membership.ValidateUser(username,password)){
    FormsAuthentication.SetAuthCookie(username,password);
}

对于WCF项目,您没有FormsAuthentication的特权,但是您仍然可以使用默认的成员资格提供程序来验证用户凭据。

之后如何处理身份验证取决于您和您的项目,但对于基本需求,我们通常使用验证后由WCF服务返回的身份验证令牌。然后,此令牌包含在每个WCF请求中,以证明它们已通过验证,通常位于请求标头中。

对于WCF,我们在向服务器提交凭据时对用户名和密码进行64位编码,如果成功,则传递回auth令牌:

代码语言:javascript
复制
string decoded = System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(Authmodel));
//convert your string into your authentication model here then
if(Membership.ValidateUser(model.user,model.pass))
{
    //return new authentication token
}

我们还在注册过程中包括了额外的逻辑,这些逻辑在那时构建了我们专有的用户和配置文件表,这是在数据项目中处理的,以便WCF和MVC都可以访问它。

此外,数据项目处理user表和profile表以及.NET Membership provider表之间的链接,以便这两个应用程序都可以访问信息。

我知道这一切都很模糊,但也许它可以帮助您想出一种以统一方式处理身份验证的选项。如果你对特定的部分有问题,请告诉我,我希望这个信息对你有用。

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

https://stackoverflow.com/questions/12440107

复制
相关文章

相似问题

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