フォーム認証に入っていく。
第19回 フォーム認証を実装したASP.NETアプリケーション:連載 プログラミングASP.NET ―ASP.NETによるWebアプリケーション実践開発講座― (1/2 ページ) - @IT
authdir2フォルダを作成。
中身は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ではアクセスできない。
だから8080でアクセスできる。
login.aspxもそう。
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/login.aspxにリダイレクトされた。
これで認証してなければリダイレクトされるとこまではできた。
FormsAuthentication.Authenticate(String, String) メソッド (System.Web.Security) | Microsoft Docs
FormsAuthentication.Authenticateで、指定されたユーザ名とパスワードで、認証というか正しいかどうかを検証する。
login.aspxを、
このように書く。
Loginボタン押したら、認証チェックして、成功なら、"Authentication Success!"と表示。
main.aspxにアクセスすると、
login.aspxにリダイレクト。
正しいユーザ名とパスワード。
"Authentication Success!"
間違っていたら、
"Authentication Failed!"