要利用ASP.Net的身份验证功能是否一定要使用SQL Server

qj123456_0 2008-12-23 10:58:42
我刚开始学习asp.net, 我想问一下如果我希望利用asp.net提供的身份验证功能,是不是我一定要利用sql server作为我的数据库呢?我用DB2或其它数据库有可能做到吗?
...全文
101 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
erytbc 2008-12-23
  • 打赏
  • 举报
回复
学习 了
  • 打赏
  • 举报
回复
随便使用什么数据库都可以,而且如果你需要的功能并不那么多,通常会比使用SQL Server还简单一些。你可以写一个类型,继承MembershipProvider类,你可以仅仅写上十几条代码实现ValidateUser这个方法以及CreateUser这个方法,基本上所有(6、7种)Login控件就都支持了。在程序中测试自定义的类的这两个方法可以直接调用成功,你就可以在web.config中的 <system.web> 组添加声明例如

<membership defaultProvider="MyMembershipProvider">
<providers >
<clear/>
<add name="MyMembershipProvider" type="MyMembershipProvider" />
</providers>
</membership>

这样asp.net应用程序运行时就会自动使用你自定义的MembershipProvider。

当你继承他们时,大多数方法都可能是无用的,你无需实现他们。你可以立刻执行你的程序功能,然后看看程序运行到哪一个方法时抛出 NotImplementedException 异常,然后写上几行代码实现这个方法跟你自己的数据库的对接功能就可以了。例如我的实现:

public override bool ValidateUser(string username, string password)
{
try
{
var pass = new Membership.BLL().登录(Membership.客户端类型.IE5, username, password);
return true;
}
catch
{
return false;
}
}



public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
using (var db = new Client())
{
var u = new 用户
{
注册名 = username,
Email = email,
密码MD5 = new Membership.BLL().从用户名称和密码计算MD5(username, password),
推荐人 = db.Cast<用户>().First(x => x.Email == "westwuwei@hotmail.com")
};
db.Save(u);
db.Commit();
status = MembershipCreateStatus.Success;
}
return null;
}

上面这两个方法调用我自己的后台的BLL功能代码,我的后台是以Client封装成的面向对象风格的远程数据库api。

如果你要页面权限验证,支持SiteMap和Menu中的role管理,你可以自己写一个类型继承RoleProvider,修改必需的几个方法,并且同样地注册。

由于role所对应的控件很少,所以很多人并不继承RoleProvider,而是继续使用自己的方法,同时也就直接在SiteMap、Menu以及页面访问权限认证时插入几条代码来直接改造他们(而使用RoleProvider你就可以在界面控制时一行代码都不写)。我的习惯就是这样的,没有什么特别的理由,也许哪一天有闲工夫我会花上半天或者一天时间研究一些是否应该自定义个RoleProvider用一下。

yutian1225 2008-12-23
  • 打赏
  • 举报
回复
当然是什么都行啊~~~~
qj123456_0 2008-12-23
  • 打赏
  • 举报
回复
非常感谢2楼的详细解答。获益匪浅。

62,242

社区成员

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

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

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

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