簡潔な答え:
あなたが説明しているコードは、アカウント コントローラーの LogOn アクションの舞台裏で発生します。
MembershipService.ValidateUser(model.UserName, model.Password)
有効なユーザーに対して true を返します。ユーザーは、コードの次の行で「サインイン」されます。
FormsService.SignIn(model.UserName, model.RememberMe)
(Models フォルダーの下の AccountModels ファイルで定義されているこれらの関数の両方を確認できます)。
ユーザーの認証中に会社 ID も確認する場合は、ValidateUser を置き換える独自の認証メソッドを作成する必要があります。これは、ストアに何を使用しているかによって異なります (SQL?)
ただし、広い意味でのベスト プラクティスとして、異なるユーザーに同じユーザー名を使用することは許可しないでください。それはただの悪い考えであり、トラブルにつながります。
アップデート:
これを行う方法をお勧めする場合は、ASP.NET メンバーシップの UserProfile の側面を使用することをお勧めします。追加のユーザー変数 (会社など) をキャプチャして保存するように設計されていますが、作成された適切に構築された安全なメンバーシップを引き続き使用します。それを読んでください、しかし以下は私が現在取り組んでいるアプリの私の CreateUser 関数です。プロファイルを使用して姓名と、ユーザーがパスワードのリセットを必要とするフラグを保存する方法に注意してください。
繰り返しますが、これは同じユーザー名を持つ複数のユーザーを持つ機能を無効にしますが、それは避けるべきだと本当に思います.
[HttpPost]
public ActionResult CreateUser(string username, string email, string first, string last, string role)
{
string password;
MembershipUser user;
//Generate a random password
password = Auth.CreateRandomPassword(6);
try
{
//Create the user
user = Membership.CreateUser(username, password, email);
//Add the user to the chosen role
Roles.AddUserToRole(username, role);
//Create the user profile
UserProfile profile = UserProfile.GetUserProfile(username);
profile.FirstName = first;
profile.LastName = last;
profile.ForcePasswordReset = true;
profile.Save();
EmailNewUser(username, email, password);
}
catch (Exception ex)
{
HttpContext.Response.StatusCode = 500;
HttpContext.Response.StatusDescription = ex.Message;
HttpContext.Response.Clear();
}
return PartialView("UserTable", Auth.Users());
}