WebSecurity.Login
in simplemembershipあなたのメールアドレスやユーザー名を入力してログインできるようにするには、ユーザー名とパスワードの代わりにユーザー名または電子メールを使用してユーザーをログインさせる方法を教えてください。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})(\]?)$");
}
}
これは単なる1つのアプローチです。あなた自身でMembershipProvider
を書くことができますが、ValidateUser
メソッドを変更する必要がある場合は、これが機能するはずです。
次の設定をweb.configに追加して、プロバイダを設定します。
<membership defaultProvider="ExtendedSimpleMembershipProvider">
<providers>
<clear/>
<add name="ExtendedSimpleMembershipProvider"
type="MyProject.Web.SimpleMembershipProvider, MyProject.Web"/>
</providers>
</membership>
あなたは正しい方向に進むはずです。
ユーザー識別に電子メールを使用しないでください。それは推測するのは非常に簡単なことであり、今日、人々はそれらを推測するツールを使用することができました。それがusernameが使われている理由です。それは何でもかまいません。
あなたが本当に欲しいのであれば、ユーザー名/電子メール+パスワードがあるテーブルのIDを使用し、最初にユーザー名と照合し、それが電子メールに一致しない場合は、両方とも失敗すると、ログインは失敗します。
チェックコードにはこれを使用しても問題はありません。ここには何も投稿していないので、必要なものを見るために変更することはできません。
MVCに関する次の質問については、まずASPフォーラムをチェックしてからここで試してください。ちょうど意見
WebSecurityちょうどフードの下でFormsAuthentication
を呼び出します。あなたはこの機能を必要とする理由
if (WebSecurity.UserExists(username))
{
FormsAuthentication.SetAuthCookie(username, false);
}
興味: あなたはこれを行うことができます。 (FYI:これを必要とする理由は、ユーザーがExpress Checkout(ショッピングカート)のフローでPayPalで認証した場合、そのユーザーが自分のサイトに自動的にログインできるようにするということです。正しい人ではない)。
は有用であり得る:Difference between FormsAuthentication and WebSecurity
私は質問を誤解し、あなたがパスワードなしで*を意味していると思っていた* - これが答えです –
あなたはちょうど私がその推測しやすいが、あなたの平均的なユーザーがそれを使用しようとしていることに同意したいUSERPROFILESテーブルから
[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. Node.jsのMongoDBで電子メールまたはユーザ名でログイン
- 2. ユーザ名または電子メールによる認証
- 3. MVC IDで「電子メール」ではなく「ユーザー名」でログインする方法は?
- 4. PHPでoauthを使用してユーザの電子メールにログインした方法
- 5. iOSでユーザーの電子メール(ログイン名)を取得する方法は?
- 6. ユーザ名、電子メール、パスワードでFirebaseに新しいユーザを作成するには?
- 7. symfony2の認証/ユーザ名の代わりに電子メールを使用したログイン
- 8. djangoの電子メールのユーザ名とパスワード
- 9. xpagesはログイン名と電子メールでnames.nsfに匿名ユーザーを登録します
- 10. vb.netでの電子メール - SMTPサーバーの問題、または匿名の電子メール?
- 11. Firebaseデータベースでユーザ名と電子メールを検索する
- 12. HTML/CSSの電子メール署名を「展開する」方法は?
- 13. アクティベーション電子メールでユーザ名と通信する
- 14. ユーザー名か電子メールIDを使用してログインする方法
- 15. django電子メールを確認するまでユーザを認証する方法
- 16. trim @ domain.xxx @電子メールだけでユーザ名を残す
- 17. 電子メールまたはユーザー名でログインし、ログイン時にUserNameの大文字/小文字を無視します。
- 18. カスタムユーザーモデル用に電子メールでログインする適切な方法は何ですか?
- 19. laravelバリデーターでユーザー名を電子メールまたは携帯電話番号として検証する方法は?
- 20. Laravel 5.3で電子メールの代わりにログインするためのユーザー名の使用方法は?
- 21. ubuntuでSFTPログイン警告(電子メールまたはSMS)を取得するには?
- 22. powershellでログインしたユーザーの電子メールを取得する方法
- 23. 電子メールでアラートまたはポップアップを開く方法
- 24. ユーザを認証するためにユーザ名の代わりに電子メール/電話を使用
- 25. passport.jsのユーザー名ではなく電子メールで認証する方法は?
- 26. ユーザー名および/または電子メールがすでに
- 27. Laravel - ユーザーネーム、電子メールまたは電話でログインしてください
- 28. ユーザ名ではなく電子メールとパスワードによるログ記録Yii 2
- 29. ユーザーがログインした後、リンク先にリダイレクトする方法(電子メールでクリック)
- 30. 電子メールでコンポーザを電子メールに添付するには
を指定したメールをユーザに引き出すことができますとにかく簡単に推測することができます。デビッドジョーンズがいたとします。彼は、david.jones、jonesd、djonesを使うかもしれない。しかし、彼らはすべて馬鹿げて推測できるので、それはあまり差がないとは思わない。 – rashleighp