几个问题:
我在app_data文件夹下创建了一个数据库。是否将此数据库与同样位于同一文件夹下的现有aspnetdb关联?如果是的话,有人能指引我吗?
如果没有,那么在APP_CODE文件夹下创建我自己的数据库的最佳方式是什么,该文件夹也将使用asp.net成员资格?我的意思是,我可以在代码中检查用户名和他们所扮演的角色(If User.IsinRole("……")等,并使用项目中的图标打开会员页面,添加/修改/删除用户?
感谢
您所需要做的就是更改连接字符串,使两者指向同一数据库。当然,您必须将模式从一个复制到另一个,以及您需要的任何数据。
您可以创建MembershipProvider。代码项目中提供了一个示例,Custom Membership Providers
您可以创建自定义Membership Provider
,因为您有自定义数据库,而不是使用aspnet_regsql生成的数据库。
public class CustomMembershipProvider : MembershipProvider
{
public override MembershipUser CreateUser(string username,
string password, string email, string passwordQuestion,
string passwordAnswer, bool isApproved,
object providerUserKey, out MembershipCreateStatus status)
{
throw new NotImplementedException();
}
public override MembershipUser GetUser(string username, bool userIsOnline)
{
throw new NotImplementedException();
}
public override bool ValidateUser(string username, string password)
{
throw new NotImplementedException();
}
public override int MinRequiredPasswordLength
{
get { throw new NotImplementedException(); }
}
public override bool RequiresUniqueEmail
{
get { throw new NotImplementedException(); }
}
}
您注册您的会员船提供商
<connectionStrings>
<add name="ApplicationServices"
connectionString="Server=your_server;Database=your_db;
Uid=your_user_name;Pwd=your_password;"
providerName="System.Data.SqlClient" />
</connectionStrings>
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<membership defaultProvider="CustomMembershipProvider">
<providers>
<clear/>
<add name="CustomMembershipProvider"
type="CustomMembership.Models.CustomMembershipProvider"
connectionStringName="AppDb"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="/" />
</providers>