求救:还是搞不懂,asp.net2.0的MembershipProvider自定义。。。

OSCAR_NJU 2006-01-25 05:48:22
引用:asp.net2的Login控件真的好用吗??

http://community.csdn.net/Expert/topic/4531/4531533.xml?temp=4.903811E-02

==============================
最近看了一下asp.net2的用户管理模型,个人感觉他的确提供了很集成化的功能,对于一般的应用可以很傻瓜式的达到要求。但是在使用中也有以下几点疑问:

1、无论我怎么配置,用户数据还是存储在app_data文件夹aspnetdb中,怎么让他存储在server的数据库中呢,比如我在server的myappDB数据库中也同样构造了aspnetdb中的表和存储过程?

2、如果我要在现有用户表上扩展功能,我还能使用MemberShip类实现吗?比如,我要记录用户的登录次数(目前aspnetdb用户表似乎没有这个),或者说每个用户都有一个账户余额,并且在创建用户的时候将为每个用户给定一个可能不同的初始余额,在登录的时候将会根据余额来判断用户能否登录成功。那么这个时候MeberShip.CreateUser(),Login控件等还有用吗,或者说怎么最大化的使用原有的方法。同时,MemberShip.DeleteUser似乎是物理删除数据(不是用IsDeleted字段),这个在应用中好像一般不是这样吧。

上面的疑问主要是vs2005新的Login系列控件的实用性问题,欢迎大家讨论并给出一点建议和思路。
============================

上面的帖子是我这几天一直存在的疑问,虽然我也知道要用继承自MembershipProvider的自定义类来解决这个问题,而且我也仔细的看了msdn的多篇相关文档,以及vs帮助中的《如何:成员资格提供程序实现示例》,但看过这些后我都没有找到解决我的问题的关键所在:

MembershipUser类是基于aspnetdb中的aspnet_Membership表的结构的(似乎可以这么说,MembershipUser类就是aspnet_Membership表的 Model),而基本上所有的Membership类以及MembershipProvider类的方法和字段都与MembershipUser有关。由于这个关系,我在自定义MembershipProvider的时候就会碰到这样的问题,MembershipProvider.GetUser是返回MembershipUser的,而事实上,我的自定义User表结构可能和aspnet_Membership表不同(比如加了n个自定义字段),这时我却无法在返回的结果中反映这个变化,得到这些信息,因为MembershipUser没有对应的字段。这个问题的存在就让我感觉到我的大部分的所谓的自定义MembershipProvider就是换汤不换药,徒劳而已。

希望得到高手指点。。也欢迎大家讨论。

...全文
289 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
venhuan 2006-04-18
  • 打赏
  • 举报
回复
第一个问题:
是不是我必须在server的myappDB数据库中构造同样aspnetdb中的表和存储过程?
是不是表结构必须完全一致,不能存储到我自己定义的表中么?比如存到一个UserInfo表?
lanhua8129 2006-04-17
  • 打赏
  • 举报
回复
我也是很想知道答案!也期望有大侠来顶一下
OSCAR_NJU 2006-02-17
  • 打赏
  • 举报
回复
还有没有大侠来指点一下哦
lnwuyaowei 2006-02-04
  • 打赏
  • 举报
回复
第一个问题有人答了,其它的问题以前也问过,目前的解决方法是附加一个表,再写一个类,需要的时候调用。
cxy89173 2006-02-04
  • 打赏
  • 举报
回复
顶一个。
OSCAR_NJU 2006-02-04
  • 打赏
  • 举报
回复
顶一下
OSCAR_NJU 2006-01-25
  • 打赏
  • 举报
回复
先给大家拜早年了,年后来结帖。
OSCAR_NJU 2006-01-25
  • 打赏
  • 举报
回复
谢谢楼上的,第一个问题好说

但是自定义的问题还是棘手。。。。
aseman 2006-01-25
  • 打赏
  • 举报
回复
第一个问题:2005下的membershipProvider默认调用的是SQLExpress数据库,这个在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config下面的machine.config里面可以看到,如果你像使用SQLServer2k或者2k5,运行:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regSQL.exe程序,里面更改默认数据库,然后在项目的web.config中重写配置文件
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
requiresQuestionAndAnswer="false" requiresUniqueEmail="true"
passwordFormat="Hashed" minRequiredNonalphanumericCharacters="0"
minRequiredPasswordLength="3" />
</providers>
</membership>
<connectionStrings>
<add name="LocalSqlServer"
connectionString="user id=sa;password=seman;initial Catalog=Data;Data Source=(local)"
providerName="System.Data.SqlClient" />
</connectionStrings>

具体的ConnectionString根据自己的情况配置

Login控件还没使用过,所以不清楚怎么处理aspnetDb表与现有的user表如果管理
OSCAR_NJU 2006-01-25
  • 打赏
  • 举报
回复
看来要明年再来了
OSCAR_NJU 2006-01-25
  • 打赏
  • 举报
回复
lnwuyaowei 2006-01-25
  • 打赏
  • 举报
回复
mark
OSCAR_NJU 2006-01-25
  • 打赏
  • 举报
回复
明天回家过春节,希望这个问题不会让我想一年
^_^

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧