1

次のようなカスタム ログイン コントロールを含む asp.net Web ページがあります。

                    <div id="login-box-name" style="margin-top: 20px;">
                    User Name:</div>
                <div id="login-box-field" style="margin-top: 20px;">
                    <asp:TextBox ID="username" runat="server" CssClass="form-login"></asp:TextBox>
                </div>
                <div id="login-box-name">
                    Password:</div>
                <div id="login-box-field">
                    <asp:TextBox ID="password" runat="server" CssClass="form-login" TextMode="Password"></asp:TextBox>
                </div>
                <br />
                <span class="login-box-options">
                    <input type="checkbox" name="1" value="1">
                    Remember Me</span>
                <br />
                <br />
                <asp:ImageButton ID="loginbtn" runat="server" ImageUrl="images/login-btn.png" 
                    onclick="loginbtn_Click" />

次のようになります。

ここに画像の説明を入力

および「loginbtn_Click」で:

if(Membership.ValidateUser(username.Text,password.Text))
   {
       var user = Membership.GetUser(username.Text);
       var userid = user.ProviderUserKey;
       Session["UserID"] = userid;
       Response.Redirect("~/Default.aspx");
   }

「ログイン ビュー コントロール」は次のようになります。

<li>
                        <asp:LoginView ID="LoginView1" runat="server">
                            <RoleGroups>
                                <asp:RoleGroup Roles="Admins">
                                    <ContentTemplate>
                                        <a href="ControlPanel.aspx">Control Panel</a>
                                    </ContentTemplate>
                                </asp:RoleGroup>
                                <asp:RoleGroup Roles="Users">
                                </asp:RoleGroup>
                            </RoleGroups>
                        </asp:LoginView>
                    </li>

しかし、私の問題は、管理者が「ログインビュー」コントロールにログインした後、「コントロールパネル」という名前のリンクが表示されないことです。これは、ログイン用に作成したカスタムコントロールまたは e.Authenticated = true; を逃したためです。 。または、他の何か??

4

1 に答える 1

2

承認Cookieを設定する必要があります

FormsAuthentication.SetAuthCookie(username.Text, true);

また、ログアウト時に必ずクリアしてください。

FormsAuthentication.SignOut();
Session.Clear();
Session.Abandon();
Response.Redirect("~/Default.aspx");
于 2012-06-19T22:18:47.930 に答える