在Asp.Net Membership中手动更改用户名
发布时间:2020-05-23 19:58:08 所属栏目:asp.Net 来源:互联网
导读:我可以通过直接访问asp.net成员资格用户表来更改用户名.但是,旧用户名保留在新行中,并由asp.net自动分配新的UserID.我如何阻止这种情况发生? 编辑:仅在users表和角色表中,而不是在成员资格表中. var mUser = dc.aspnet_Users .Where(u = u.UserId == (Guid)
|
我可以通过直接访问asp.net成员资格用户表来更改用户名.但是,旧用户名保留在新行中,并由asp.net自动分配新的UserID.我如何阻止这种情况发生? 编辑:仅在users表和角色表中,而不是在成员资格表中. var mUser = dc.aspnet_Users
.Where(u => u.UserId == (Guid)user.ProviderUserKey)
.Select(u => u).SingleOrDefault();
mUser.UserName = newName;
mUser.LoweredUserName = newName.ToLower();
try
{
dc.SubmitChanges();
}
catch
{
...
}
解决方法ASP.NET 2.0中的sql成员资格提供程序不支持更改用户名.您仍然可以更改用户名,但必须使用自定义实现.此外,您必须使用新用户名更新成员资格cookie,以避免使用相同的用户名重新创建用户,但新的UserId. 在下面的示例中,我使用Linq to SQL来更新成员资格表 – 我有名为MembershipDataContext的数据上下文. public bool ChangeUserName(Guid userId,string newUserName)
{
bool success = false;
newUserName = newUserName.Trim();
// Make sure there is no user with the new username
if (Membership.GetUser(newUserName) == null)
{
MembershipUser u = Membership.GetUser(userId);
string oldUsername = u.UserName;
// get current application
MembershipDataContext context = new MembershipDataContext ();
aspnet_User userToChange = (from user in context.aspnet_Users
where user.UserId == userId
select user).FirstOrDefault();
if (userToChange != null)
{
userToChange.UserName = newUserName;
userToChange.LoweredUserName = newUserName.ToLower();
context.SubmitChanges();
// ASP.NET Issues a cookie with the user name.
// When a request is made with the specified cookie,// ASP.NET creates a row in aspnet_users table.
// To prevent this sign out the user and then sign it in
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie =
HttpContext.Current.Request.Cookies[cookieName];
FormsAuthenticationTicket authTicket = null;
try
{
authTicket =
FormsAuthentication.Decrypt(authCookie.Value);
FormsIdentity formsIdentity =
new FormsIdentity(
new FormsAuthenticationTicket(
authTicket.Version,newUserName,authTicket.IssueDate,authTicket.Expiration,authTicket.IsPersistent,authTicket.UserData));
string y = HttpContext.Current.User.Identity.Name;
string[] roles =
authTicket.UserData.Split(new char[] { '|' });
System.Security.Principal.GenericPrincipal genericPrincipal =
new System.Security.Principal.GenericPrincipal(
formsIdentity,roles);
HttpContext.Current.User = genericPrincipal;
}
catch (ArgumentException ex)
{
// Handle exceptions
}
catch( NullReferenceException ex)
{
// Handle exceptions
}
FormsAuthentication.SignOut();
HttpContext.Current.Session.Abandon();
FormsAuthentication.SetAuthCookie(newUserName,false);
success = true;
}
}
return success;
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 用于电子邮件创建和发送的ASP.Net MVC后台线
- asp.net-mvc – 使用ASP.NET MVC v2 EditorFor和DisplayFor
- asp.net-mvc – Asp.net MVC查看测试?
- mime-types – 在ASP.NET 5中使用MimeMapping(vNext)
- asp.net-mvc – MVC 4 Code First属性上的ForeignKeyAttrib
- ASP.NET MVC和Web Forms在同一个Web应用程序中?
- asp.net-mvc – 带有并发检查的ASP.NET MVC实体框架
- asp.net-mvc – 我们可以传递模型作为参数在RedirectToActi
- asp.net – 如何使用输出缓存.ashx处理程序
- 如何禁用Button asp.net
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC ModelMetaData:有没
- 单元测试ASP.NET MVC重定向
- asp.net-core – 构建asp.net核心错误
- asp.net – 如何在页面加载中以编程方式向页面添
- asp.net-mvc – Web路由如何工作?
- asp.net-web-api – ASP.NET WEB API 2 OWIN身份
- asp.net-mvc-5 – Web API 2 OWIN承载令牌的目的
- asp.net mvc调试器抛出SEHException
- 验证 – 想知道为什么DisplayName属性在被覆盖属
- asp.net-mvc – 在同一个视图文件夹中的RenderPa
热点阅读
