ASP.NET Membership Provider实现

时间:2014-05-22 02:19:13

标签: asp.net sql sql-server asp.net-membership

我正在尝试实现客户ASP.NET成员资格提供程序。我还没有数据库,但我知道我想要一个简单易用的数据库。

我知道我不想使用生成的表格,因为从我所看到和理解的内容来看,它们非常令人费解,并且包含了我刚刚赢得的许多领域。我设置了默认的成员资格提供程序,并让它生成自己的数据库/表,并产生了这个:

enter image description here

所有这一切。我不希望这个烂摊子成为我数据库的一部分。那自然的解决方案呢?自定义会员提供商。为此,我知道您需要从System.Web.Security.MembershipProvider继承并将web.config设置为我创建的派生类。

public class MessAround : System.Web.Security.MembershipProvider
{
public MessAround()
{

    //
    // TODO: Add constructor logic here
    //
}

public override string ApplicationName
{
    get
    {
        throw new NotImplementedException();
    }
    set
    {
        throw new NotImplementedException();
    }
}

public override bool ChangePassword(string username, string oldPassword,

 string newPassword)
{
    throw new NotImplementedException();
}

public override bool ChangePasswordQuestionAndAnswer(string username
, string password, string newPasswordQuestion, string newPasswordAnswer)
{
    throw new NotImplementedException();
}

.... ETC等等

我的问题是:

  • 如何将此类集成到自定义数据库架构中?

  • 如何消除我不需要的字段?

  • 如何让此课与我的数据库表进行交互?

  • WTF正在进行中? :P

1 个答案:

答案 0 :(得分:1)

首先,整个ASP.Net Membership是内置功能。所以有利有弊如

赞成

  • 易于使用和实施
  • 提供用户管理的所有功能
  • 自动创建UI,数据库和关系。

缺点

  • 定制是一项繁琐的工作。
  • 实施到整个系统之后,删除整件事就会出问题。

现在我逐一给出答案。

  1. 如何将此类集成到自定义数据库架构中? 对于模式使用,规则始终在对象之前使用schema-name,如 yourschema.sp_name
  2. 如何消除我不需要的字段? 您无法删除字段作为字段的一个或多个引用。为什么你删除字段,你只是离开了。我也发现了同样的问题,因为我离开了,只使用了我想要的东西。
  3. 如何让这个类与我的数据库表进行交互? 如果您正在使用Entity-Framenwork或linq,则将其作为表的类。 您需要哪种类型的互动?用于登录 - 注销或会话管理。然后查看以下链接:
  4. How to Check whether Session is Expired or not in asp.net

    Using session variable with ASP.Net membership provider