C# WebMatrix.WebData.WebSecurity-如何仅通过PasswordResetToken获取用户名
我只是想寻求帮助来完成我的剧本?我想使用PasswordResetToken获取用户名 这是我的设想C# WebMatrix.WebData.WebSecurity-如何仅通过PasswordResetToken获取用户名,c#,asp.net-mvc,membership-provider,C#,Asp.net Mvc,Membership Provider,我只是想寻求帮助来完成我的剧本?我想使用PasswordResetToken获取用户名 这是我的设想 我的网站上有一个忘记密码的功能,可以向用户发送passwordresettoken电子邮件更改密码 我只想发送passwordresettoken字符串 当用户单击链接时。我只需查询请求[“令牌”]以获取用户名,然后允许用户更改密码和自动登录 下面是我的代码: public ActionResult ChangePassword() { ChangePasswordModel model
public ActionResult ChangePassword()
{
ChangePasswordModel model = new ChangePasswordModel();
string token=string.Empty;
try
{
token = Request["token"].ToString();
int userId = WebSecurity.GetUserIdFromPasswordResetToken(token);
if (userId > 0)
{
//Get the user object by (userid)
//???????????????????
//???????????????????
}
else
{
throw new Exception("The change password token has expired. Please go to login page and click forgot password again.");
}
}
catch
{
model.HasError = true;
ModelState.AddModelError("", "The change password token has expired. Please go to login page and click forgot password again.");
}
return View(model);
}
提前谢谢。请看本文末尾的备注: 为方便起见,我将复制相关部分: 如果用户忘记了密码,他们可以申请新密码。到 请提供新密码,请执行以下操作:
SimpleMembershipProvider provider = (SimpleMembershipProvider)Membership.Provider;
string username = provider.GetUserNameFromId(userId);
参考:。我认为
WebSecurity.GetUserIdFromPasswordResetToken(string token)
方法可以满足您的需要
更多信息
更新:
对不起,我没看到你已经在用那种方法。。。因此,如果您想要获取用户名,并且正在使用Entity Framework的代码优先迁移,则可以使用以下LINQ表达式获取用户名:
string username = yourDbContext.UserProfiles.FirstOrDefault(up=>up.UserId == userId).Username;
嗨,泽斯里,谢谢你的及时回复。但我希望用户在更改密码后登录。回答很好,这正是我想要的-+1!