【问题标题】:ASP.NET Membership Provider implementationASP.NET 成员资格提供程序实现
【发布时间】:2014-05-22 02:19:12
【问题描述】:

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

我知道我不想使用生成的表格,因为据我所见和理解,它们非常复杂,并且包含许多我不需要的字段。我设置了默认的 Membership 提供程序并让它生成自己的数据库/表,然后它生成了这个:

完全独立。我不希望这种混乱成为我数据库的一部分。那么自然解决方案呢?自定义成员资格提供程序。为此,我知道您需要从 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 等 ETC 等

我的问题是:

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

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

  • 如何让这个类与我的数据库表交互?

  • WTF 正在进行吗? :P

【问题讨论】:

  • 在生成类中,只需从您将使用的方法中删除throw new NotImplementedException();,而是在其中添加您自己的实现。那些你不需要的方法,你可以直接扔掉。检查此答案以开始:stackoverflow.com/a/5702000/1429080

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


【解决方案1】:

首先,整个 ASP.Net Membership 是内置功能。所以各有优缺点

优点

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

缺点

  • 定制是一项繁琐的工作。
  • 实施到整个系统后,删除整个系统会产生问题。

现在我一一给出答案。

  1. 如何将此类集成到自定义数据库架构中? 对于架构使用,规则始终是在 yourschema.sp_name 等对象之前使用架构名称
  2. 如何消除不需要的字段? 您不能删除字段作为字段的一个或多个引用。为什么你删除字段,你只是离开了。我也发现了同样的问题,因为我离开了,只使用了我想要的。
  3. 如何让这个类与我的数据库表交互? 如果您使用的是 Entity-Framenwork 或 linq,它会作为您的表的一个类。 您需要哪种类型的互动?用于登录-注销或会话管理。然后检查这个链接:

How to Check whether Session is Expired or not in asp.net

Using session variable with ASP.Net membership provider

【讨论】:

  • "您不能将字段作为一个或多个字段引用来删除。为什么要删除字段,您就离开了。我也发现了同样的问题,因为我离开了,只使用了我想要的。”请详细说明。
  • 我的建议是使用会员表。您只需添加您的自定义表格,以防您需要某些东西。删除成员表中的列会给引用键或其他一些时间错误,因为它们都是相互关联的。所以不要浪费时间去删除。做你需要的。
  • 我不得不说我不一定同意,大多数网络也不同意,因为通常建议使用自定义会员提供程序。关键是,我不想想要使用那个数据库模式。看看这篇文章,这里可能才是真正的解决方案。
  • 虽然非常感谢您抽出宝贵时间来回答,但我并不是在找人说“只使用默认值,这样会更好”
猜你喜欢
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多