asp.net2.0中,成员管理和角色管理同时用会导致重复用户 同时开启成员管理和角色管理,先注册一个用户后,在用角色管理的功能把该用户添加到某个角色中,这时数据库中会出现重复的用户名,这是为什么,怎么解决?请教各位了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.成员服务 使用ASP.NET Web Site Administration Tool创建配置网站的权限信息。该工具在http://localhost/<项目名>/webadmin.axd,通过配置,该工具将直接生成一个web.config的文件用于存贮成员信息。在asp.net2.0中也提供了两个类用于成员管理,这两个类是Membership和MembershipUser,他们位于System.Web.Security命名空间下。其中前者包含一系列静态方法,用于创建,删除,更改,验证等操作。后者是一个描述单一用户的登陆信息的类,每一个实例就是一个用户登陆信息的集合。Membership的一些方法:(基本可以见名知意) CreateUser DeleteUser GeneratePassword GetAllUser GetUser UpdateUser ValidateUser MembershipUser的一些方法: ChangePassword ChangePasswordQuestionAndAnswer GetPassword ResetPasswordMembershipUser的一些属性:(基本可以见名知意) Comment(用于存储用户自定义数据) CreationDate Email LastLoginDate LastPasswordChangedDate UserId UserName 一些例子:创建一个新用户 MembershipCreateStatus status; MembershipUser user = Membership.CreateUser(this.TB_Username.Text, this.TB_Password.Text, this.TB_Email.Text, out status);//传出参数status中包含了创建用户的结果信息,可以根据这些信息进行进一步处理.更改密码 if (this.IsValid) { MembershipUser user = Membership.GetUser(); user.Email = this.TB_Email.Text; user.Comment = this.TB_Comment.Text; Membership.UpdateUser(user); if ((this.TB_OldPassword.Text.Length > 0) && (this.TB_NewPassword.Text.Length > 0)) { user.ChangePassword(this.TB_OldPassword.Text, this.TB_NewPassword.Text); } }另所有的用户信息可以存储在SQL Server中或者Access中。要在SQL Server中存储这些信息可以使用<windir>\Microsoft.NET\Framework\<version>下的aspnet_regsql.exe工具来生成数据库。 数据库生成完毕后需要在配置文件中做如下更改:<?xml version="1.0"?><configuration> <connectionStrings> <add name="LocalSqlServer" connectionString="data source=127.0.0.1;Integrated Security=SSPI" /> </connectionStrings> <system.web> <membership defaultProvider="AspNetSqlProvider" /> <roleManager enabled="true" defaultProvider="AspNetSqlProvider" /> </system.web></configuration> 2.角色管理服务 与成员管理类似,角色管理也能通过ASP.NET Web Site Administration Tool进行。与成员管理不同的是角色管理只有一个类Roles。也就是说role只是作为一个字符串存在,并没有一个role类来记录它的成员信息。它提供一系列静态方法用于角色操作。(同样,基本是见名知意)AddUserToRole CreateRole DeleteRole GetRolesForUser GetUsersInRole IsUserInRole RemoveUserFromRole 由于角色管理缺省是禁用的,所以要在配置文件中做如下更改: <configuration> <system.web> <roleManager enabled="true" /> </system.web></configuration>另可以在cookie中缓存角色信息,要实现这一点只需要在配置文件中做如下更改:<configuration> <system.web> <roleManager enabled="true" cacheRolesInCookie="true" /> <!-- 其他属性以及默认值: cookieName=".ASPXROLES" // Cookie 名 cookieTimeout="30" // Cookie 生存期 cookiePath="/" // Cookie 路径 cookieRequireSSL="false" // 限制 cookie 使用 SSL cookieSlidingExpiration="true" // 重新申请满期的Cookie cookieProtection="All" /> // Cookie 保护级别 --> </system.web></configuration> 问一下,下面的 <system.web> <membership defaultProvider="AspNetSqlProvider" /> <roleManager enabled="true" defaultProvider="AspNetSqlProvider" /> </system.web>这两个aspnetsqlprovider(成员管理的角色管理的)是不是必须一样,否则就会导致重复用户? 当把已注册用户添加到角色中时(Roles.AddUserToRole(TextBox3.Text.ToString(), TextBox4.Text.ToString());),在Sql2000的数据库中的aspnet_membership表和aspnet_users表中存在重名用户 这两个同名用户的ApplicationId一样吗?是否程序把你的代码区别为两个Application了? 已解决,是我把用户管理和角色管理的applicationName写得不一致了 动态引用webservice 极度郁闷的乱码问题 如何用服务器端的命令按钮,关闭这个对话框? asp.net checkbox分页问题麻烦大侠指点 先谢谢回答的各位,别只看啊,进来坐坐啊! 哪错了阿 datagrid控件输出日期问题 一个关于DATAGRID的问题 不刷新页面定时查询数据库 如何打开一个新的浏览器窗口 初次运行visual studio 2005的问题 通过vs.net创建强类型数据集,在“添加新项”中选择“xml架构”文件和“数据集”文件有区别?
在asp.net2.0中也提供了两个类用于成员管理,这两个类是Membership和MembershipUser,他们位于System.Web.Security命名空间下。其中前者包含一系列静态方法,用于创建,删除,更改,验证等操作。后者是一个描述单一用户的登陆信息的类,每一个实例就是一个用户登陆信息的集合。Membership的一些方法:(基本可以见名知意) CreateUser
DeleteUser
GeneratePassword
GetAllUser
GetUser
UpdateUser
ValidateUser
MembershipUser的一些方法: ChangePassword
ChangePasswordQuestionAndAnswer
GetPassword
ResetPassword
MembershipUser的一些属性:(基本可以见名知意) Comment(用于存储用户自定义数据)
CreationDate
Email
LastLoginDate
LastPasswordChangedDate
UserId
UserName
一些例子:创建一个新用户 MembershipCreateStatus status;
MembershipUser user = Membership.CreateUser(this.TB_Username.Text,
this.TB_Password.Text, this.TB_Email.Text, out status);//传出参数status中包含了创建用户的结果信息,可以根据这些信息进行进一步处理.更改密码 if (this.IsValid)
{
MembershipUser user = Membership.GetUser(); user.Email = this.TB_Email.Text;
user.Comment = this.TB_Comment.Text;
Membership.UpdateUser(user); if ((this.TB_OldPassword.Text.Length > 0) &&
(this.TB_NewPassword.Text.Length > 0))
{
user.ChangePassword(this.TB_OldPassword.Text,
this.TB_NewPassword.Text);
}
}另所有的用户信息可以存储在SQL Server中或者Access中。要在SQL Server中存储这些信息可以使用<windir>\Microsoft.NET\Framework\<version>下的aspnet_regsql.exe工具来生成数据库。 数据库生成完毕后需要在配置文件中做如下更改:<?xml version="1.0"?>
<configuration> <connectionStrings>
<add name="LocalSqlServer"
connectionString="data source=127.0.0.1;Integrated Security=SSPI" />
</connectionStrings> <system.web>
<membership defaultProvider="AspNetSqlProvider" />
<roleManager enabled="true" defaultProvider="AspNetSqlProvider" />
</system.web>
</configuration>
2.角色管理服务 与成员管理类似,角色管理也能通过ASP.NET Web Site Administration Tool进行。与成员管理不同的是角色管理只有一个类Roles。也就是说role只是作为一个字符串存在,并没有一个role类来记录它的成员信息。它提供一系列静态方法用于角色操作。(同样,基本是见名知意)AddUserToRole
CreateRole
DeleteRole
GetRolesForUser
GetUsersInRole
IsUserInRole
RemoveUserFromRole
由于角色管理缺省是禁用的,所以要在配置文件中做如下更改: <configuration>
<system.web>
<roleManager enabled="true" />
</system.web>
</configuration>
另可以在cookie中缓存角色信息,要实现这一点只需要在配置文件中做如下更改:
<configuration>
<system.web>
<roleManager enabled="true" cacheRolesInCookie="true" />
<!-- 其他属性以及默认值:
cookieName=".ASPXROLES" // Cookie 名
cookieTimeout="30" // Cookie 生存期
cookiePath="/" // Cookie 路径
cookieRequireSSL="false" // 限制 cookie 使用 SSL
cookieSlidingExpiration="true" // 重新申请满期的Cookie
cookieProtection="All" /> // Cookie 保护级别
-->
</system.web>
</configuration>
<system.web>
<membership defaultProvider="AspNetSqlProvider" />
<roleManager enabled="true" defaultProvider="AspNetSqlProvider" />
</system.web>这两个aspnetsqlprovider(成员管理的角色管理的)是不是必须一样,否则就会导致重复用户?