FormsAuthentication.Authenticate

フォーム認証に入っていく。

第19回 フォーム認証を実装したASP.NETアプリケーション:連載 プログラミングASP.NET ―ASP.NETによるWebアプリケーション実践開発講座― (1/2 ページ) - @IT

authdir2フォルダを作成
authdir2フォルダを作成

authdir2フォルダを作成。

中身はlogin.aspxとmain.aspx
中身はlogin.aspxとmain.aspx

中身はlogin.aspxとmain.aspx。

login.aspxは、

<%@ Page Language="C#" %>
<html>
    <head runat="server">
        <script runat="server">
            void Page_Load(object sender, EventArgs e)
            {
                Title = "login";
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:Label id="label1" Text="login" runat="server" />
            </div>
        </form>
    </body>
</html>

仮でこうしておく。
main.aspxも、

仮でこうしておく。

wwwrootの下の普通のフォルダの下のファイルなのでHTTPではアクセスできない
wwwrootの下の普通のフォルダの下のファイルなのでHTTPではアクセスできない

wwwrootの下の普通のフォルダの下のファイルなのでHTTPではアクセスできない。

だから8080でアクセスできる
だから8080でアクセスできる

だから8080でアクセスできる。

login.aspxもそう。
login.aspxもそう。

login.aspxもそう。

web.configを追加
web.configを追加

web.configを追加。

<configuration>
    <system.web>
        <authentication mode="Forms">
            <forms name="authdir2" loginUrl="login.aspx" protection="All" path="/" timeout="30">
                <credentials passwordFormat="Clear">
                    <user name="testuser1" password="testpass1" />
                </credentials>
            </forms>
        </authentication>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
</configuration>

これがフォーム認証の設定。
main.aspxなど、中のページにアクセスしようとしても、認証されてなければ、login.aspxにリダイレクトされる。
credentialsの下のユーザ名とパスワードなら認証成功する。
これで、main.aspxにアクセスしたら、

こういうエラー
こういうエラー

こういうエラー・・・。

.NET TIPS [ASP.NET]構成ファイルのみでフォーム認証を実現するには? - C# Webフォーム - @IT

<authentication>要素は、machine.config、またはアプリケーション・ルート直下のweb.configにしか記述することができないので注意が必要だ。

アプリケーションルート直下って、wwwrootのことかな。

こっちに移動
こっちに移動

こっちに移動。

login.aspxはauthdir2の下なので、loginUrlを修正。

authdir2/main.aspxにアクセス
authdir2/main.aspxにアクセス

authdir2/main.aspxにアクセス。

authdir2/login.aspxにリダイレクトされた
authdir2/login.aspxにリダイレクトされた

authdir2/login.aspxにリダイレクトされた。
これで認証してなければリダイレクトされるとこまではできた。

FormsAuthentication.Authenticate(String, String) メソッド (System.Web.Security) | Microsoft Docs

FormsAuthentication.Authenticateで、指定されたユーザ名とパスワードで、認証というか正しいかどうかを検証する。
login.aspxを、

このように書く。
Loginボタン押したら、認証チェックして、成功なら、"Authentication Success!"と表示。
main.aspxにアクセスすると、

login.aspxにリダイレクト。
login.aspxにリダイレクト。

login.aspxにリダイレクト。

正しいユーザ名とパスワード
正しいユーザ名とパスワード

正しいユーザ名とパスワード。

&quot;Authentication Success!&quot;
"Authentication Success!"

"Authentication Success!"

間違っていたら
間違っていたら

間違っていたら、

&quot;Authentication Failed!&quot;
"Authentication Failed!"

"Authentication Failed!"

Sample/aspnet/FormsAuthentication/Authenticate/src/FormsAuthentication_ at master · bg1bgst333/Sample · GitHub