C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

ASP.NETによるフォーム認証について /simano (20/10/14(Wed) 18:26) #95988
Re[1]: ASP.NETによるフォーム認証について /WebSurfer (20/10/14(Wed) 18:47) #95990
  └ Re[2]: ASP.NETによるフォーム認証について /simano (20/10/14(Wed) 19:04) #95991
    └ Re[3]: ASP.NETによるフォーム認証について /WebSurfer (20/10/14(Wed) 21:19) #95993
      └ Re[4]: ASP.NETによるフォーム認証について /simano (20/10/14(Wed) 22:07) #95995
        └ Re[5]: ASP.NETによるフォーム認証について /WebSurfer (20/10/14(Wed) 23:05) #95996
          └ Re[6]: ASP.NETによるフォーム認証について /simano (20/10/14(Wed) 23:27) #95997
            └ Re[7]: ASP.NETによるフォーム認証について /WebSurfer (20/10/14(Wed) 23:33) #95998
              └ Re[8]: ASP.NETによるフォーム認証について /simano (20/10/15(Thu) 00:04) #95999 解決済み
                └ Re[9]: ASP.NETによるフォーム認証について /WebSurfer (20/10/15(Thu) 10:24) #96000
                  └ Re[10]: ASP.NETによるフォーム認証について /simano (20/10/15(Thu) 12:05) #96006 解決済み


親記事 / ▼[ 95990 ]
■95988 / 親階層)  ASP.NETによるフォーム認証について
□投稿者/ simano (7回)-(2020/10/14(Wed) 18:26:31)

分類:[ASP.NET (C#)] 

こんにちは。

VisualStudio 2019, C#でASP.NETによるWebアプリケーションを作成しております。

以下のURLを参照して、フォーム認証を実装させていただきました。
https://www.atmarkit.co.jp/ait/articles/0307/26/news002.html

しかし、自分で作成した「Web Forms」プロジェクトに、同URLのサンプルコードをコピーしたところ、
そのままでは、フォーム認証が動作しない箇所がありました。

Global.asax.cs内のApplication_Start関数で、初期状態から書かれている下記の一文があると、
Webアプリ起動時のhtmlページに「アクセスが拒否されました。」と表示されます。
---
RouteConfig.RegisterRoutes(RouteTable.Routes);
---

この一文をコメントアウトすると問題ないのですが、初期状態から書かれている文を
コメントアウトして問題ないのか気になります。

ネット上で同関数を検索しても、今一つ何を行っているのか理解できませんでした。
コメントアウトすることの弊害や、同関数を書いてもフォーム認証が動作する方法について、
お知恵を拝借できないでしょうか。

よろしくお願いいたします。








[ □ Tree ] 返信 編集キー/

▲[ 95988 ] / ▼[ 95991 ]
■95990 / 1階層)  Re[1]: ASP.NETによるフォーム認証について
□投稿者/ WebSurfer (2117回)-(2020/10/14(Wed) 18:47:43)
No95988 (simano さん) に返信

> 以下のURLを参照して、フォーム認証を実装させていただきました。
> https://www.atmarkit.co.jp/ait/articles/0307/26/news002.html

それは 2003年07月26日付のメチャ古い記事で、ひょっとしたら自分が知っているフォーム認証
以前のものかもしれないですが、なんでそんな古いものを使っているのですか?

10 年以上前のアプリの保守とかでなく新規開発なら、ASP.NET Identity を使いましょう。
[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 95990 ] / ▼[ 95993 ]
■95991 / 2階層)  Re[2]: ASP.NETによるフォーム認証について
□投稿者/ simano (8回)-(2020/10/14(Wed) 19:04:42)
No95990 (WebSurfer さん) に返信
> ■No95988 (simano さん) に返信
>
>>以下のURLを参照して、フォーム認証を実装させていただきました。
>>https://www.atmarkit.co.jp/ait/articles/0307/26/news002.html
>
> それは 2003年07月26日付のメチャ古い記事で、ひょっとしたら自分が知っているフォーム認証
> 以前のものかもしれないですが、なんでそんな古いものを使っているのですか?
>
> 10 年以上前のアプリの保守とかでなく新規開発なら、ASP.NET Identity を使いましょう。

おっしゃる通り、かなり古い記事なのですが、ユーザー数が10名程度と小さいイントラネット内のWebアプリのため、
フォーム認証を使えば、規模に対して十分かなと思いました。

ASP.NET Identityについても調べたのですが、Entity Frameworkなど、DB連係することを前提にしたサンプルが多く、
ユーザー情報をxmlファイルで管理したいと考えていたため、実現したいことと一致する記事に書かれていたフォーム認証を選びました。
[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 95991 ] / ▼[ 95995 ]
■95993 / 3階層)  Re[3]: ASP.NETによるフォーム認証について
□投稿者/ WebSurfer (2118回)-(2020/10/14(Wed) 21:19:40)
No95991 (simano さん) に返信

> おっしゃる通り、かなり古い記事なのですが、ユーザー数が10名程度と小さいイントラネット内のWebアプリのため、
> フォーム認証を使えば、規模に対して十分かなと思いました。

web,config にユーザー情報を保存する方法はあるようですが、そうしようと思ってますか?

イントラネットで限られたユーザーしかアクセスしないのなら、そもそも認証など不要と思うの
ですか、どういう目的に使おうと思っているのですか?
[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 95993 ] / ▼[ 95996 ]
■95995 / 4階層)  Re[4]: ASP.NETによるフォーム認証について
□投稿者/ simano (9回)-(2020/10/14(Wed) 22:07:30)
No95993 (WebSurfer さん) に返信
> web,config にユーザー情報を保存する方法はあるようですが、そうしようと思ってますか?
>
> イントラネットで限られたユーザーしかアクセスしないのなら、そもそも認証など不要と思うの
> ですか、どういう目的に使おうと思っているのですか?

ご返信ありがとうございます。

Web.configですと、ユーザー情報が他の設定の中に埋もれてしまうため、
簡単に確認しやすいように、できれば外出しにしたいと考えています。

また、ユーザー認証は、ユーザーにより表示する内容を切り替えたり、
管理者しか表示できない画面を用意する目的です。

[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 95995 ] / ▼[ 95997 ]
■95996 / 5階層)  Re[5]: ASP.NETによるフォーム認証について
□投稿者/ WebSurfer (2119回)-(2020/10/14(Wed) 23:05:06)
No95995 (simano さん) に返信

> Web.configですと、ユーザー情報が他の設定の中に埋もれてしまうため、
> 簡単に確認しやすいように、できれば外出しにしたいと考えています。
>
> また、ユーザー認証は、ユーザーにより表示する内容を切り替えたり、
> 管理者しか表示できない画面を用意する目的です。

そこまで掲示板で聞いて実装しようとしているのですか・・・

ちょっと付き合いきれません。撤退します。悪しからずご了承ください。
[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 95996 ] / ▼[ 95998 ]
■95997 / 6階層)  Re[6]: ASP.NETによるフォーム認証について
□投稿者/ simano (10回)-(2020/10/14(Wed) 23:27:02)
No95996 (WebSurfer さん) に返信
> そこまで掲示板で聞いて実装しようとしているのですか・・・
>
> ちょっと付き合いきれません。撤退します。悪しからずご了承ください。

ご不快に感じられたようで、大変申し訳ありませんでした。

上の返答は、WebSurferさんのご質問に答えたつもりで、
実装方法を教えていただくつもりではありませんでした。
上記の内容で、実装はほぼ出来ていますが、最初に質問させていただいた内容が、
疑問として残っていました。

ただ、古い手段に頼っていると、最新のライブラリとの兼ね合いが難しいのかもしれないと、
反省しております。

WebSurferさん、どうもありがとうございました。
[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 95997 ] / ▼[ 95999 ]
■95998 / 7階層)  Re[7]: ASP.NETによるフォーム認証について
□投稿者/ WebSurfer (2120回)-(2020/10/14(Wed) 23:33:43)
No95997 (simano さん) に返信

不快とかそう言うことではなくて、このような掲示板で
質問して独自の認証システムを実装するのは無理だとい
うことです。
[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 95998 ] / ▼[ 96000 ]
■95999 / 8階層)  Re[8]: ASP.NETによるフォーム認証について
□投稿者/ simano (11回)-(2020/10/15(Thu) 00:04:09)
No95998 (WebSurfer さん) に返信
大変申し訳ありませんでした。

認証システムは、内容が全体の仕様に関わりますし、
一部分を取り上げて質問させていただくことではありませんでした。

重ねまして、ご返答ありがとうございました。

これで解決とさせていただきます。
解決済み
[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 95999 ] / ▼[ 96006 ]
■96000 / 9階層)  Re[9]: ASP.NETによるフォーム認証について
□投稿者/ WebSurfer (2121回)-(2020/10/15(Thu) 10:24:23)
No95999 (simano さん) に返信

撤退しますとか言っておきながら何ですが、最初の質問の以下が何かだけ書いておきます。

> Global.asax.cs内のApplication_Start関数で、初期状態から書かれている下記の一文があると、
> Webアプリ起動時のhtmlページに「アクセスが拒否されました。」と表示されます。
> ---
> RouteConfig.RegisterRoutes(RouteTable.Routes);
> ---

質問者さんが Visual Studio のどのテンプレートを使ってプロジェクトを作成したか不明ですが、
上のコードは Visual Studio が自動生成したものと理解して・・・

RouteTable.Routes というのは App_Start/RouteConfig.cs に含まれる静的クラス/メソッドで、
Global.asax.cs の Application_Start でアプリの起動時に一回だけ呼ばれるようになっていま
す。

それは Friendly url というルーティングの機能を有効にするためで、簡単に言うと旧来はブラ
ウザからページにアクセスする URL に default.aspx というように拡張子を含める必要があった
ものを default で呼び出すことができるようにしたものです。

> この一文をコメントアウトすると問題ないのですが、初期状態から書かれている文を
> コメントアウトして問題ないのか気になります。

コメントアウトするとその機能は無効になりますが、問題が少なくとも 2 つあります。(自分が
知らないだけで他にもあるかも)

(1) 拡張子 .aspx がついてないと当然 404 エラーになる。Visual Studio のテンプレートで作っ
  たプロジェクトでは Friendly url を使うことが前提で、.aspx 拡張子が付いてないリンクが
  多数ハードコーディングされている。自分が気が付いた限りでは、マスターページにあるリン
  ク先 4 ヶ所、Satrtup.Auth.cs の LoginPath = new PathString("/Account/Login") 、
Account フォルダ下の Manage.aspx ページ(他にもあったかも)。

(2) 301 リダイレクトなのでブラウザにキャッシュされてしまう。最初 Friendly url を有効にし
  ていて、途中で無効にした場合、ブラウザのキャッシュを消去しないとダメ。

ただ、上記のことが質問にある、

> Webアプリ起動時のhtmlページに「アクセスが拒否されました。」と表示されます。

とつながりませんが。そこは質問者さんの方で頑張って調べてもらう他なさそうです。
[ 親 95988 / □ Tree ] 返信 編集キー/

▲[ 96000 ] / 返信無し
■96006 / 10階層)  Re[10]: ASP.NETによるフォーム認証について
□投稿者/ simano (12回)-(2020/10/15(Thu) 12:05:50)
No96000 (WebSurfer さん) に返信

大変わかりやすいご説明を、ありがとうございました。
RouteTable.Routesについて、一歩踏み込んだ内容を教えていただきまして、理解することができました。

Friendly url という機能を有効にするんですね。
この機能を使わないと、テンプレートで作成されるプログラムがうまく動作せずに、
今後も各所で立ち止まっていたと思われます…。

また、教えていただいた内容から、htmlページが表示されない理由がわかりました。
Web.configに書いたauthenticationタグのloginUrlに指定したUrlに「.aspx」がついていたためでした。

この文字を削除して、Global.asaxでRouteTable.Routesを登録する処理を戻したところ、
無事にログイン機能が動作いたしました。



解決済み
[ 親 95988 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -