1

サイトでのユーザー認証に単純な asp:login フォームを使用しています。できる限り基本的に設定しました。コードは次のようになります。

<asp:Login ID="LoginForm" runat="server"
    DestinationPageUrl="~/LoggedIn/TaskPanel.aspx" >
</asp:Login>

適切なテーブルが私の SQL Server データベースにあり、ログインは魅力のように機能します:)

ログインしたら、いくつかのユーザーデータを取得し、後で使用するためにセッションに保存したいと考えています。これを行うには、データベースのストアド プロシージャを介してユーザー名を渡すつもりです。次のことを試しましたが、認証しようとすると何も起こらず、ページが更新されます。

<asp:Login ID="LoginForm" runat="server"
    DestinationPageUrl="~/LoggedIn/TaskPanel.aspx"
    OnAuthenticate="storeUserDetails" >
</asp:Login>

C#:

protected void storeUserDetails(object sender, EventArgs e)
{
    Session["accountCustUsername"] = LoginForm.UserName;
    ...
    ...
}

また、何かが起こるかどうかを確認するために、このメソッドに Response.Redirect を入れてみましたが、何も起こりません。

ログイン テンプレートを使用して、ユーザー名テキスト ボックスの ID を取得する必要がありますか? そして、これはどのように正確に行われるのでしょうか?

4

2 に答える 2

1

フォーム認証が適切に構成されている場合は、User.Identity.Nameログイン後に呼び出すことができます。

Session["accountCustUsername"] = User.Identity.Name;
//if you aren't in your code behind use HttpContext.Current.User.Identity.Name;

ただし、ログインしている限り、その値は常に利用可能であるため、実際にそれを行う必要はありません。

このコードは、TaskPanel.aspxページのPage_Loadに配置できます(ログイン後にアクセスするページであると想定しているため)

于 2013-01-14T20:25:38.550 に答える
1

Membership Api 関数を使用して、現在ログインしているユーザーを取得できます。

この名前空間を含める

using System.Web.Security;

現在のユーザーにアクセスする

MembershipUser currentUser = Membership.GetUser();
string username = currentUser.Username;

また

string username = HttpContext.User.Identity.Name;
于 2013-01-14T20:58:25.050 に答える