質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

4005閲覧

アクセスユーザー名とパスワードの抽出条件の記入

aged_man_oldbow

総合スコア12

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

1クリップ

投稿2018/09/26 14:53

編集2018/09/28 03:14

お世話になります。

Visual Studio 2017を使って、asp.net Webプログラムを開発しようとしています。

前提・実現したいこと
20年程前に、aspでプログラムを作ったことがあります。Accessデータベースを、Webプログラムで読み書き更新するプログラムでした。
その際に作ったプログラムを、今回asp.netで更新しようとしています。

発生している問題・エラーメッセージ
スタートして間もないのですが、**ログイン画面から、userNameとpasswordを入力しても、「ログインに失敗しました。やり直してください。」 の表示が出て、次のページに進めない状況です。**その原因が分からず、進まなくなっています。

疑問
下記ログインソースを使った場合、WHERE (((tm 管理者.[アクセスユーザー名])="userName") AND ((tm 管理者.password)="password") のアクセスユーザー名とパスワードの抽出条件は、ログインソースにありませんので、どの様に記載すれば宜しいのでしょうか?
また、このクエリーへのアクセスは、どのファイルに記入されるのでしょうか?

開発ツール
Visual Studio 2017を使っています。

プロジェクトは、
Visual C# ⇒ Web ⇒ ASP.NETアプリケーション(.NET Framework4.6.1 ⇒ 新しいASP.NETアプリケーション
⇒ Webアプリケーション ⇒ Webフォームを選択して、作りました。

ログインのソースコード(ツールボックスのloginを使いました)

<form id="Form_kanrisya_login" runat="server"> <asp:Login ID="kanrisya_login" runat="server" BorderStyle="Solid" DestinationPageUrl="~/kanrisya_menu/kanrisya_default.aspx" PasswordRecoveryText="ユーザーパスワード共登録済みの、10桁以内の英数字名半角・10桁以内の英数字を入力し、ログインをクリック" Width="390px" Height="150px" ForeColor="Black" #nAuthenticate="kanrisya_login_Authenticate" TitleText="ログイン画面" CssClass="fon-position2" Font-Bold="True" Font-Size="Small" TabIndex="1"> <CheckBoxStyle Font-Bold="True" Font-Overline="True" Font-Size="XX-Small" BackColor="White" BorderColor="Black" Width="398px" /> </asp:Login> </form>

データベース
ACCESS2013版を使用し、Visual Studio 2017のソリューションエクスフローラのApp-DataフォルダのACCESSデータベースを立ち上げて、クエリーを作りました。データベースは、接続していると思います。

クエリーは、
SELECT tm 管理者.管理者ID, tm 管理者.管理者名, [tm 役職者名].役職名, [tm 権限範囲].権限の範囲名称
FROM (tm 管理者 LEFT JOIN [tm 権限範囲] ON tm 管理者.権限範囲ID = [tm 権限範囲].権限範囲ID) LEFT JOIN [tm 役職者名] ON tm 管理者.役職名ID = [tm 役職者名].ID
WHERE (((tm 管理者.[アクセスユーザー名])="userName") AND ((tm 管理者.password)="password") AND ((tm 管理者.効力発生日)<=Now()) AND ((tm 管理者.[マスター有効期限])>=Now()) AND ((tm 管理者.[データ種別]) Is Null Or (tm 管理者.[データ種別])<=Now() Or (tm 管理者.[データ種別])="0"));
となっています。

やってみたこと
クエリーでは、抽出条件を無くしても、本人のユーザー名・パスワードを抽出条件にしても、表示されます。
ログインのソースコードに、userNameとpasswordがないのが気なって、何度かクエリーのuserNameとpasswordを変更して、試みましたが、同じ状況でした。本人のuserNameとpasswordを使って見ましたが、同じ結果でした。

追記
前に、マスターページのお話を戴きましたが、ご提示戴いたページには目を通させて戴きました。英文は苦手ですので、日本語の他の資料等を参考にして、今回新しいプロジェクトを作ったものです。決して前のスレッドを無視しているわけではありません。新しいプロジェクトには、ScriptManagerが入っていることを確認しています。マスターの中には、appsettingsが入っています。画像を添付しようとしましたが、設定できませんでした。途中で投げ出しているわけではありません。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/09/26 15:17

前のスレッド https://teratail.com/questions/146680 でもお願いしましたが、ソースは ``` と ``` で囲ってインデントされるように設定してください。
退会済みユーザー

退会済みユーザー

2018/09/26 15:17

それから、前のスレッドの時のように、途中で投げ出す(=回答者の時間と労力を無駄にする)ということは今回はないと思っていいのですか?
退会済みユーザー

退会済みユーザー

2018/09/26 15:22

で、前のスレッドの問題は解決したのですか?
退会済みユーザー

退会済みユーザー

2018/09/27 14:34 編集

お願いした「ソースは ``` と ``` で囲ってインデントされるように設定してください」すらやってもらえないのですか? インデントされてないコードが入っている質問は見る気力がわいてこないのですが・・・
退会済みユーザー

退会済みユーザー

2018/09/28 02:57 編集

質問は書き直したようですが、なぜその時に「ソースは ``` と ``` で囲ってインデントされるように設定してください」ができないのですか? 無視されているような気がします。 それとも言っていることが理解できない? であれば聞いてください。無視はダメ 回答者からも無視されますよ。
guest

回答1

0

ベストアンサー

待っていても何も進まないようですので、とりあえずの回答を書いておきます。

質問者さんが書いたような独自の認証システムを実装するのは、はっきり言って、今の質問者さんの実力では無理です。不可能とまでは言いませんが、やるなら何か月か勉強して必要な知識を付けてからにしましょう。

ASP.NET のフレームワークに備わった既存の認証システム ASP.NET Identity を使ってください。

以下のように Visual Studio のテンプレートを利用してプロジェクトを生成すれば、

イメージ説明

自動的にユーザー登録やログインに必要なページが生成されます(下は画像の右上の[ログイン]をクリックすると表示されるログイン画面)、

イメージ説明

上の画像の右上の[登録]ボタンをクリックするとユーザー登録画面が表示され、最初のユーザー登録で EF Code First の機能と LocalDB を利用して自動的に .mdf ファイルが生成され(下の画像参照)、上の画像のログインページからログインできるようになります。

イメージ説明

そのようにしてください。独自実装ではサポートできません。

なお、コードをインデントされるようにするというのは以下のようにすることです。今後は必ずそうしてください。ちなみに下記コードは自動生成された Login.aspx で、上の画像を表示したものです。

<%@ Page Title="ログイン" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="WebFormsAppSSL.Account.Login" Async="true" %> <%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %> <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent"> <h2><%: Title %>.</h2> <div class="row"> <div class="col-md-8"> <section id="loginForm"> <div class="form-horizontal"> <h4>ローカル アカウントを使用してログインします。</h4> <hr /> <asp:PlaceHolder runat="server" ID="ErrorMessage" Visible="false"> <p class="text-danger"> <asp:Literal runat="server" ID="FailureText" /> </p> </asp:PlaceHolder> <div class="form-group"> <asp:Label runat="server" AssociatedControlID="Email" CssClass="col-md-2 control-label">電子メール</asp:Label> <div class="col-md-10"> <asp:TextBox runat="server" ID="Email" CssClass="form-control" TextMode="Email" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="Email" CssClass="text-danger" ErrorMessage="電子メール フィールドは必須です。" /> </div> </div> <div class="form-group"> <asp:Label runat="server" AssociatedControlID="Password" CssClass="col-md-2 control-label">パスワード</asp:Label> <div class="col-md-10"> <asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="Password" CssClass="text-danger" ErrorMessage="パスワード フィールドは必須です。" /> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <div class="checkbox"> <asp:CheckBox runat="server" ID="RememberMe" /> <asp:Label runat="server" AssociatedControlID="RememberMe">このアカウントを記憶する</asp:Label> </div> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <asp:Button runat="server" OnClick="LogIn" Text="ログイン" CssClass="btn btn-default" /> </div> </div> </div> <p> <asp:HyperLink runat="server" ID="RegisterHyperLink" ViewStateMode="Disabled">新規ユーザーとして登録する</asp:HyperLink> </p> <p> <%-- パスワードの再設定機能についてアカウントの確認を有効にしてから、この設定を有効にしてください <asp:HyperLink runat="server" ID="ForgotPasswordHyperLink" ViewStateMode="Disabled">パスワードを忘れた場合</asp:HyperLink> --%> </p> </section> </div> <div class="col-md-4"> <section id="socialLoginForm"> <uc:OpenAuthProviders runat="server" ID="OpenAuthLogin" /> </section> </div> </div> </asp:Content>

投稿2018/09/28 05:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aged_man_oldbow

2018/09/29 05:51

有り難うございます。 visual studio 2017やASP.NETについての本は、何点か購入して読みながらやっているんですが、覚えたてで、御迷惑をお掛けしております。読んだ書籍の説明によると、ご回答にあるように「自動的にユーザー登録やログインに必要なページが生成されます」と書かれていましたので、まさか自分が「独自の認証システムを実装する」プログラムを作っているなんて思っていませんでした。考えているシステムは別にして、visual studio 2015を購入した時は、ずいぶん便利なシステムがあるんだな程度で、いろい遊んでいるうちに、visual studio 2017が出て、本格的に取り組み始めたものです。ご指摘ありがとうございます。ASPプログラムを作った時は、テキストで書いて行くような感じのプログラムを使っていた記憶があります。 その上、ご丁寧なご指導戴き、これからご指導戴いたプロジェクトとソースを参考に、再スタートさせて戴きます。 結果はまた情報を差し上げますので、今後とも宜しくお願い致します。 有り難うございました。
退会済みユーザー

退会済みユーザー

2018/09/29 06:46

質問者さんの問題・課題が解決したならこのスレッドはクローズしてください。前のスレッドも同じです。
aged_man_oldbow

2018/09/29 14:43

今まで、ご指導戴いたように進めてみましたが、「上の画像の右上の[登録]ボタンをクリックするとユーザー登録画面が表示され、最初のユーザー登録で EF Code First の機能と LocalDB を利用して自動的に .mdf ファイルが生成され(下の画像参照)、上の画像のログインページからログインできるようになります。 」で .mdf ファイルが生成されませんでした。明日もう一度やってみますので、もう暫くお待ちください。申し訳ありません。
退会済みユーザー

退会済みユーザー

2018/09/29 22:00

EF Code First で DB が自動生成されるには LocalDB が必要です。インストールされていることを確認してください。 あと、実際は生成されているのに、設定の問題でソリューションエクスプローラに表示されてないだけということもあるかもしれません。
退会済みユーザー

退会済みユーザー

2018/09/29 22:08

ところで、前のスレッドの問題は解決したのですか? 解決してないなら、それを解決するのは今後のために必須ですよ。解決したのなら、その旨前のスレッドに書いてクローズしてください。
aged_man_oldbow

2018/09/30 15:39

有り難うございます。 ログイン画面は、開きますが、登録するとエラーになる状況です。使っているパソコンの問題のようではないかと思っています。 「EF Code First で DB が自動生成されるには LocalDB が必要です」とのことで、もう一度プロジェクト作ってみましたが、サーバーエクスローラに、サーバーに以前インストールしたことがある、SQLサーバーが入っていました。SQLは、アンインストールしたのですが、残っているものがあるようです。明日は、その辺を調べてみます。 前のスレッドの問題は、新たにプロジェクトを作ってテストしていますので、分からいままになっています。解決できていませんので、、このスレッドを先に確認させていただけたらと考えています。 ご面倒お掛けして申し訳ありません。
退会済みユーザー

退会済みユーザー

2018/10/01 06:10

時間がかかりそうですね。表題や最初の質問の Access を使って独自認証を実装するというのは止めて ASP.NET Identity を使うことにしたなら、とにかくこのスレッドはクローズしてください。最初の話から質問の内容が変わって、それをずるずる引きずるのは好ましくないです。ASP.NET Identity に関して質問があるなら、新たに別のスレッドを立てて質問してください。
aged_man_oldbow

2018/10/01 11:59

アドバイス有難うございました。 ASP.NET Identityで、進めて行けそうですので、このスレッドをクローズさせて戴きます。 お世話様でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問