我遇到了問題:我的websecurity在確認時總是拋出錯誤。我究竟做錯了什麼? 這裏是我的驗證行動(IVE調試它,收到的ID是正確的確認令牌:WebSecurity.ConfirmAccount(Id)始終爲假
public ActionResult Validate(String Id)
{
if (String.IsNullOrEmpty(Id))
{
return View();
}
bool b = WebSecurity.ConfirmAccount(Id);
if (b)
{
return View("ConfirmationSuccess");
}
return View("ConfirmationFailure");
}
,這裏是我的註冊行動:
public ActionResult Register(RegisterModel model, string ReturnUrl)
{
if (ModelState.IsValid)
{
// Попытка зарегистрировать пользователя
try
{
string confirmationToken = WebSecurity.CreateUserAndAccount(model.rEmail.ToLower(), model.rPassword, null, true);
dynamic email = new Email("~/Views/Emails/RegisterConfirmation.cshtml");
email.To = model.rEmail;
email.ConfirmationToken = confirmationToken;
email.Send();
return RedirectToAction("EmailValidation", new { Email = model.rEmail.ToLower() });
}
catch (MembershipCreateUserException e)
{
string field = string.Empty;
switch (e.StatusCode)
{
case MembershipCreateStatus.DuplicateUserName:
field = "rEmail";
break;
case MembershipCreateStatus.InvalidPassword:
field = "rPassword";
break;
default:
field = "RegisterForm";
break;
}
ModelState.AddModelError(field, ErrorCodeToString(e.StatusCode));
}
}
ViewBag.RegisterModel = model;
ViewBag.ReturnUrl = ReturnUrl;
ViewBag.LoginModel = new LoginModel();
//ModelState.AddModelError("rEmail", "Пользователь с таким e-mail уже зарегистрирован");
// Появление этого сообщения означает наличие ошибки; повторное отображение формы
return View("Login");
}
電子郵件發送註冊後,鏈接是正確的鏈接,但是當它關繫到WebSecurity.ConfirmAccount(同上),它總是拋出虛假....
謝謝您的時間和我的英語不好對不起。
UPD: 有一個轉換器可讓所有網址在我的IIS服務器上降低。難道是這種情況嗎,它比較鍵區分大小寫?我該如何解決這個問題?
UPD: 好的,問題確實在小寫的url。 WebSecurity.ConfirmAccount是區分大小寫的......我在我的行動中做了一個小小的解決方法,這樣我就可以得到正確的ConfitmtionToken,但這不是完全正確的方式,而我認爲可能有兩個相同的ConfirmationToken.ToLower()所以,請有人指點我做正確的方法。 這裏是我的解決辦法:
public ActionResult Validate(String Id)
{
if (String.IsNullOrEmpty(Id))
{
return View();
}
//bool b = WebSecurity.ConfirmAccount(Id);
using (var ctx = new DBContext())
{
Id = ctx.wpMembership.Where(s => s.ConfirmationToken.Equals(Id, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault().ConfirmationToken;
}
if (WebSecurity.ConfirmAccount(Id))
{
return View("ConfirmationSuccess");
}
return View("ConfirmationFailure");
}
英語並不壞實際上:) – 2013-03-16 17:04:44
如果你嘗試更換您的創建與該用戶有什麼影響: WebSecurity.CreateUserAndAccount(「用戶名」,「密碼」,requireConfirmationToken:真); – 2013-03-16 17:11:03
謝謝!但同樣的事情......我已經更新了我的帖子,並提供了更多信息 – CodeDemen 2013-03-16 17:24:40