0

ユーザーがログインすると、セッションは次のように設定されます。

HttpContext.Current.Session["LoggedIn"] = true;
HttpContext.Current.Session["FullName"] = (string)Reader["FirstName"] + " " + (string)Reader["LastName"];

私のSite.masterファイルにはサイト全体のナビゲーション メニューが含まれており、ユーザーがログインしているかどうかに応じて異なるリンクを表示するように変更したいと考えています。

のようなものSite.master

<div id="navigation">
    <ul>
    <% 
        if (HttpContext.Current.Session["LoggedIn"] != null)
        {
            %><li><a href="/user74/aspnet/Logout.aspx">Log out</a></li><%
        }
        else
        {
            %>
                <li><a href="/user74/aspnet/Register.aspx">Register</a></li>
                <li><a href="/user74/aspnet/Login.aspx">Log in</a></li>
            <%
        }
    %>
    </ul>
</div>

ただし、これは機能しないようです。PHP タグのような ASP タグは使用できないようです。

どうすればこれを達成できますか?

4

2 に答える 2

0

まず、 Sessionを使用する代わりに、ASP.NET認証を使用してユーザーを認証することをお勧めします。これにより、役割ベースのセキュリティなどの多くの利点が得られます。

あなたはに対してユーザーを認証することができます

  • Windows(デフォルト)
  • フォーム
  • パスポート

これらの認証方法のいずれかを使用すると、LoginViewコントロールを使用して、ユーザーのセットごとに異なるHTMLをレンダリングできます。詳細については、ASP.NETのヒント:LoginViewコントロールの使用を参照してください。

于 2012-11-15T05:28:01.070 に答える
0

あなたは PHP に詳しいようですが、まず、通常の .NET プロセスを使用することをお勧めします。

1.aspx ページに HTML を記述し、HTML の「a」を asp:linkbutton に置き換えます。

<div id="navigation">
 <ul>
  <li><asp:LinkButton ID="LinkButton2" runat="server" PostBackUrl="/user74/aspnet/Logout.aspx">Log out</asp:LinkButton></li>
 </ul>
</div>

2. pagename.aspx.cs ページにコードを記述します。この場合、page_load イベントにセッション チェックを記述します。

protected void Page_Load(object sender, EventArgs e)
{
    if (HttpContext.Current.Session["LoggedIn"] != null)
    {
        LinkButton1.Visible = true;
    }
}
于 2012-11-15T05:34:43.743 に答える