ASP.NET メンバーシップ アプリケーションがあります。「JONNY」としてログインすると成功です。次に RUPERT が (別の場所にある別の PC から) メンバー エリアをクリックすると、ログインは求められませんが、Jonny のプロフィールと情報が表示されます。まるで、Jonny が「Remember Me」をクリックしたかのように、Rupert は彼の同じマシンの上に来て、リンクをクリックします。ここでは、同じマシン上にあり、Jonny がログアウトしていないため、Rupert に Jonny のページが表示されることを期待します。しかし、この 2 人は別の場所、別のマシン、別の IP などにいます。
どうすればいいの?
public ActionResult Login(LoginModel model, string returnUrl)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
// user is logged in here, we know the username is valid...
var memberStore = new MemberStore();
var member = memberStore.GetMemberByUsername(model.UserName);
// but now check if they've confirmed their email
// if not, sign the session out and show inactive account view...
if (!member.IsActive)
{
FormsAuthentication.SignOut();
return View("AccountNotActive");
}
string[] roleNames = Roles.GetRolesForUser(model.UserName);
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
Settings.Setting.UserSession.Member = member;
var viewModel = new MyProfileViewModel { Member = memberStore.GetMemberByUsername(model.UserName) };
viewModel.Role = roleNames[0];
return View("MyProfile", viewModel);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
public ActionResult Logout()
{
Settings.Setting.UserSession.Member = null;
FormsAuthentication.SignOut();
return View("LoggedOut");
}