WebSecurity.Login
을 simplemembership으로 가져 가면 사용자 이름과 암호를 사용하여 사용자 이름이나 이메일 대신에 사용자 이름을 사용하여 로그인하는 방법, 사용자가 로그인 할 때 자신의 이메일 또는 사용자 이름을 자유롭게 입력 할 수있게합니다.username 또는 email을 사용하여 WebSecurity.Login을 로그인하는 방법은 무엇입니까?
답변
SimpleMembershipProvider
에서 상속 받아 ValidateUser
메서드를 무시할 수 있습니다.
public class ExtendedSimpleMembershipProvider : SimpleMembershipProvider
{
public override bool ValidateUser(string login, string password)
{
// check to see if the login passed is an email address
if (IsValidEmail(login))
{
string actualUsername = base.GetUserNameByEmail(login);
return base.ValidateUser(actualUsername, password);
}
else
{
return base.ValidateUser(login, password);
}
}
bool IsValidEmail(string strIn)
{
// Return true if strIn is in valid e-mail format.
return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}
}
이것은 하나의 접근 방법입니다. 자신 만의 MembershipProvider
을 작성할 수 있지만 ValidateUser
메소드 만 변경해야하는 경우이 방법을 사용해야합니다.
다음 구성을 web.config에 추가하여 공급자를 설정하십시오.
<membership defaultProvider="ExtendedSimpleMembershipProvider">
<providers>
<clear/>
<add name="ExtendedSimpleMembershipProvider"
type="MyProject.Web.SimpleMembershipProvider, MyProject.Web"/>
</providers>
</membership>
올바른 방향으로 가야합니다.
사용자 식별을 위해 전자 메일을 사용하지 마십시오. 짐작할 수있는 것은 매우 쉽습니다. 오늘날 사람들은 도구를 사용하여 짐작할 수 있습니다. 이것이 사용자 이름이 사용 된 이유입니다.
실제로 그렇게하고 싶다면 username/email + password가있는 테이블의 ID를 사용하고 사용자 이름과 먼저 일치시키고 이메일과 일치하지 않는 경우. 둘 다 실패하면 로그인이 실패합니다.
여기에 아무것도 게시하지 않았으므로 수정 코드를 사용하여 문제가 발생하지 않아야합니다. 필요한 항목을 확인하기 위해 수정할 수 없습니다.
WebSecurity.GetUserId(email);
MVC와 관련된 다음 질문은 먼저 ASP 포럼에서 확인하십시오. 그냥 의견
WebSecurity 그냥 후드 아래 FormsAuthentication
호출합니다. 이 작업을 수행 할 수 :
if (WebSecurity.UserExists(username))
{
FormsAuthentication.SetAuthCookie(username, false);
}
호기심을이 기능이 필요한 이유. (FYI : 나의 추론은 사용자가 Express Checkout (장바구니) 흐름에서 PayPal을 사용하여 인증 한 경우 해당 사용자가 내 사이트에 자동 로그인 할 수있는 위험성이 매우 낮다고 생각하기 때문입니다 올바른 사람이 아님).
유용 할 수 있습니다 : 당신은 그냥 UserProfiles 테이블에서 주어진 이메일로 사용자를 뽑을 수 Difference between FormsAuthentication and WebSecurity
나는 질문을 오해하고 패스워드없이 *를 의미한다고 생각했다. - 이것이 바로 답이다. :) –
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
var login = false;
if (ModelState.IsValid)
{
if (!model.UserName.Contains("@"))
{
if (WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
login = true;
}
else
{
var targetUser = db.UserProfiles.Where(u => u.Email == model.UserName).FirstOrDefault();
if (targetUser != null && WebSecurity.Login(targetUser.UserName, model.Password, persistCookie: model.RememberMe))
login = true;
}
}
if (login)
return Redirect(returnUrl);
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
- 1. Zend_Auth는 username 또는 email을 identityColumn으로 사용하여 로그인합니다.
- 2. SQL에서 UserName 및 Email을 확인하고 레코드가 존재하면 오류 메시지 생성
- 3. 자바 코드를 사용하여 Facebook에 로그인하는 방법은 무엇입니까?
- 4. SmartDashBoard에 로그인하는 방법은 무엇입니까?
- 5. 로그인하는 가장 좋은 방법은 무엇입니까?
- 6. jBPM5에서 krisv로 로그인하는 방법은 무엇입니까?
- 7. 스크립트를 사용하여 원격으로 사이트에 로그인하는 방법은 무엇입니까?
- 8. Apache의 HttpClient를 사용하여 Gmail에 로그인하는 방법은 무엇입니까?
- 9. ASP.NET MVC4를 사용하여 로그인하는 방법은 무엇입니까?
- 10. log4net을 사용하여 RichTextBox에 로그인하는 방법은 무엇입니까?
- 11. HttpWebRequest를 사용하여 라우터에 로그인하는 방법은 무엇입니까?
- 12. MembershipProvider를 사용하여 수동으로 사용자를 로그인하는 방법은 무엇입니까?
- 13. android app에서 Facebook을 사용하여 로그인하는 방법은 무엇입니까?
- 14. sharekit API를 사용하여 Facebook에 로그인하는 방법은 무엇입니까?
- 15. Facebook 계정을 사용하여 로그인하는 방법은 무엇입니까?
- 16. selenium webdriver를 사용하여 Salesforce 응용 프로그램에 로그인하는 방법은 무엇입니까?
- 17. Expression Engine에 로그인하는 방법은 무엇입니까?
- 18. OpenID로 자동 로그인하는 방법은 무엇입니까?
- 19. "username"또는 "email"로 로그인하도록 authlogic을 구성하십시오.
- 20. 컬 (curl)과 PHP를 사용하여 웹 사이트에 로그인하는 방법은 무엇입니까?
- 21. 현재 사용자가 아파치 영역에 로그인하는 방법은 무엇입니까?
- 22. Xcode에서 사용자 이름/암호를 사용하여 웹 사이트에 로그인하는 방법은 무엇입니까?
- 23. 사용자를 계속 로그인하는 가장 좋은 방법은 무엇입니까?
- 24. 사용자 이름 또는 전자 메일 ID를 사용하여 로그인하는 방법
- 25. 장고에 로그인하는 방법은?
- 26. tastypie를 사용하여 django에 로그인하는 방법
- 27. 간단한 PHP 스크립트를 사용하여 cognos 8.4 bi에 로그인하는 방법은 무엇입니까?
- 28. ID 또는 이메일로 로그인하는 방법
- 29. 데이터베이스를 거치지 않고 로그인하는 방법은 무엇입니까?
- 30. Gmail을 통해 Gmail에 로그인하는 방법은 무엇입니까?
나는 동의 할 거라고는 쉽게 추측 할 수 있지만 일반 사용자는이를 사용하려고하는 것을 어쨌든 짐작하기 쉬운 것. 데이비드 존스가 있다고 해봅시다. 그는 david.jones, jonesd, djones를 사용할 것입니다. 그러나 그들은 모두 우스꽝스럽게 추측 할 수 있습니다. 그래서 나는 그것이 너무 많은 차이를 만들 것이라고 생각하지 않습니다. – rashleighp