1

asp.net Webサイトで、ユーザーがログインする必要があるメンバーシップ機能を有効にしています。ログイン後に使用されるクエリのセッションデータにユーザー名を保存したいと思います。

ログインページに、セッションデータを保存するための次のコードがありますが、機能しません。

Session["UserName"] = System.Web.HttpContext.Current.User.Identity.Name;

制御パラメーター(session [username])が空を返すため、クエリは結果をロードしません。

誰かがそれが機能しない理由は何である可能性があるかを提案できますか?

4

3 に答える 3

3

多くの場合、ユーザー情報は次のページが読み込まれるまで利用できません。

ログイン後に「ホップ」ページにリダイレクトし、ユーザーが要求したページにリダイレクトしなければならない場合があります。

MVCでそれを行う方法は次のとおりです

ログイン:

public ActionResult Login(LoginModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        return Hop(returnUrl);
    }
}

ホップページ:この時点で、ユーザー情報が実際に利用可能になります。

public ActionResult Hop(string returnUrl)
{
    Session["UserName"] = User.Identity.Name;
    return Redirect(returnUrl);
}
于 2013-01-03T19:29:34.053 に答える
2

メンバーシッププロバイダーを使用している場合は、それらのクラスを使用してユーザー情報を取得する必要があります。使ってみてください

Session["UserName"] = Membership.GetUser().UserName
于 2013-01-03T19:08:02.630 に答える
0

ページでログインコントロールを使用していますか?その場合、次のように、コントロールから直接ユーザー名を取得できます。(Loginコントロールの名前がloginControlであると想定)

Session["UserName"] = loginControl.UserName;
于 2013-01-03T22:30:48.230 に答える