1

これを正しく処理しているかどうかはわかりませんが、問題が発生しているため、そうではないと思います。

ログイン画面を読み込むときに、法人IDを送信する必要があります。

このように見えます:

public ActionResult LogOn(string id)
{
  var sb = new StringBuilder();
  sb.AppendLine(string.Format("CorpID: {0}", id));

  if(ViewBag.CorpID != null)
    sb.AppendLine(string.Format("ViewBag.CorpID: {0}", ViewBag.CorpID));

  Guid corpIdGuid;
  if (!Guid.TryParse(id, out corpIdGuid) && string.IsNullOrEmpty(ViewBag.CorpID))
    return null;

  // the id passed in will take presidence over the 
  // viewbag unless it is blank then we use viewbag
  // one way or the other viewbag.corpid should not
  // be blank
  if(!string.IsNullOrEmpty(id))
    ViewBag.CorpID = id;

  // Session["CorpId"] = id;
  //Not a junk guid.. continue.
  return View();
}

このセッションでどの会社と協力するかを決めるためにこれが必要です。

私が遭遇している問題は、10分に設定されているCookieタイムアウトが発生したときに、このログインに戻るように指示し、私はもうcorpidを持っていないことです。

試してみましたがviewbag、リセットされています。

クッキーを試しましたが、有効期限が切れたため、データがありません。

プロファイルマネージャーを試しましたが、ログに記録されているため、何も返されません。

CorpIdユーザーがタイムアウトしてログイン画面に戻ったときにこれを維持するにはどうすればよいですか?私が持っている画面ごとにこの情報が必要です。

どんな入力でも大歓迎です!

4

1 に答える 1

2

ユーザーのセッションで有効期限が切れない企業IDを識別する別のCookieを作成する必要があります。Session["CorpId"]ユーザーセッションで期限切れになり、機能しなくなります。

var corpCookie = new HttpCookie("CorpID", id);
corpCookie.Expires = DateTime.Now.AddDays(30.0);
HttpContext.Current.Response.Cookies.Set(corpCookie);

ユーザーがログインするたびに、有効期限を更新してスライド式の有効期限にすることができます。Cookieの値を取得するには、次を使用します。

var corpID = HttpContext.Current.Request.Cookies.Get("CorpID").Value;
于 2012-09-10T15:33:40.123 に答える