プログラミングでアカウントの認証を行う方法

このQ&Aのポイント
  • rubyのプログラミングでアカウントに関するプログラムを作成する際、アカウントの認証方法を考える必要があります。アカウントが存在する場合は成功とし、パスワードが違う場合は再度入力を求める処理を行います。また、アカウントが存在しない場合は存在しない旨を表示します。
  • アカウントデータはテキストファイルに保存されており、名前とパスワードが順に記録されています。そのため、アカウント名とパスワードを入力した後、定義した関数verifyAccountを用いてアカウントの認証を行います。
  • ログイン処理を行うためには、アカウント名とパスワードの入力が必要です。入力されたアカウント名とパスワードをverifyAccount関数に渡し、結果を変数resultに保存します。その後、結果に応じた処理を記述することでログインの成否を判断することができます。
回答を見る
  • ベストアンサー

アカウントのプログラムについて

rubyのプログラミングでアカウントに関するプログラムでアカウントがある場合は成功しました、パスワード違う場合はもう一度入力してください、アカウントがない場合はアカウントがありませんと表示をさせようと思っています。ちなみに、アカウントデータはテキストファイルの中に、名前、パスワードの順番に入っています。 そこで何ですが、def verifyAccount(account, password)という関数の中身をどう定義したら良いのでしょうか? あと、result = verifyAccount(account, password)以降に何を書いたら良いか教えてもらえたら嬉しいです。 聞きたいことが多くて申し訳ないですが是非ともよろしくお願いします! def verifyAccount(account, password) end print "*** ログインしてください。自分のアカウント名とパスワードを入力してください。 ***\n" print "アカウント:" account = gets.chop print "パスワード:" password = gets.chop result = verifyAccount(account, password) ...

  • Ruby
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.4

No.2です > アカウントがある場合は成功しました 「成功しました」というのは表示するメッセージだったのですね。 プログラムを作って上手く動作したのだと勘違いしました、失礼しました。 > verifyAccount(account, password)という関数 学校の課題ということなのではっきりとは書きませんが ・前の住所の場合と同じ様にHashにファイルデータを読み込ませる   hash[アカウント] = パスワード ・account有無の確認は、hashのkeyにaccountが存在するか調べる。 ・passwordの確認は、hash[account]とpasswordが一致するか調べる。 以上でできると思います。  Hashのマニュアル  http://doc.ruby-lang.org/ja/1.8.7/class/Hash.html

runa3829
質問者

補足

クラスを定義すれば、良いのでしょうか?? そうすると、result以降のの書き方は変わってきますか??

その他の回答 (3)

回答No.3

余計なお世話かもしれませんが、 アカウントが存在しない場合と、パスワードが違う場合でメッセージを分けると、 アカウントの存在が発覚するので、セキュリティ的にはよろしくありません。 どちらも「アカウント名またはパスワードが違います」といったメッセージにするのがおすすめです。

runa3829
質問者

補足

書き忘れましたが、学校の課題でそういう指定なんです。

  • siffon9
  • ベストアンサー率64% (136/211)
回答No.2

> アカウントがある場合は成功しました どの様なプログラムで成功したのか書かれていないと、再入力の処理をどの様に追加して良いかも答えにくいと思います。 > verifyAccount(account, password)という関数 例えば、アカウントもパスワードも一致する場合は、resultに 0 を返す。 アカウントが無い場合は 1 を返す。 アカウントが有るがパスワードが一致しない場合は 2 を返す というように作れば良いのではないでしょうか。 > result = verifyAccount(account, password)以降 上の例で考えるとresultが 0 になるまで再入力を行う処理を繰り返す、whileを使えばできますよね。 1 や 2 の場合はそれに応じたメッセージを表示させます。

runa3829
質問者

補足

成功というのアカウント名があって、なおかつパスワードが一致したときのことをいいます。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

> アカウントデータはテキストファイルの中に、名前、パスワードの順番に入っています。  じゃあ、それを適当に読み出して、何かの変数に格納するコードを書いて補足にどうぞ。 > result = verifyAccount(account, password)以降に何を書いたら良いか教えてもらえたら嬉しいです。 result に従って結果を表示するコードを書いて補足にどうそ。

関連するQ&A

  • アカウントプログラムについて

    rubyでアカウントとパスワードを検証するプログラムを、ハッシュを使って作成しようと思っています。 そこで、if文を使って条件をわけようとしているのですが、うまくいきません。 自分なりに書いてはみたのですが間違っているようで、どこをどう直したらよいか教えていただきたいです! $KCODE = "e" hash_account = {} fo = open("accountData.txt", "r") i = 0 while(line = fo.gets) ary = line.split hash_account[ary[0]] = ary[1] i = i + 1 end fo.close print "*** ログインしてください。自分のアカウント名とパスワードを入力してください。 ***\n" print "アカウント:" account = gets.chop print "パスワード:" password = gets.chop if (hash_account[account] == password) print "ようこそ、", account,"さん。それではゲームを始めましょう。\n" elsif print "パスワードが間違っているようです。\n" else print account,"というアカウントはありません。\n" end ちなみに、accountData.txtには、アカウント名、パスワードの順に入っています。

    • ベストアンサー
    • Ruby
  • cgiのプログラム

    前自分が質問したアカウントの管理についてなんですが、今度はそれをcgiプログラムに書き換えたいと思っています。そこで、ログインのページはできたのですが、認証できたかどうかのページがうまくいきませんでした。そこでなんですが、どう書き換えたらよいのでしょうか?? お願いします! ログインのページと認証のページのプログラムを両方書いておきます。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>ログインページ</title> </head> <body> ログインしてください。<br> 自分のアカウント名とパスワードを入力してください。<br> <form method="GET" action="http://verify.cgi"> アカウント名: <input type="text" name="an"> <br> パスワード:<input type="password" name="pw" size="15"> <input type="submit" value="ログイン"> </form> </body> </html> #!/usr/local/bin/ruby print "Content-type: text/html; charset=euc-jp\n\n" $KCODE = "e" require "CGI" cgi = CGI.new account = cgi["an"] password = cgi["pw"] hash_account = {} fo = open("accountData.txt", "r") i = 0 while(line = fo.gets) ary = line.split hash_account[ary[0]] = ary[1] i = i + 1 end fo.close account = gets.chop password = gets.chop print <<EOS <HTML> <head> <meta http-equiv="content-type" content="text/html; charset=EUC-JP"> <title>アカウント認証</title> </head> <body bgcolor="skyblue"> EOS if (hash_account[account] == password) print "ようこそ、" #{account}"さん。それではゲームを始めましょう。" elsif hash_account.has_key? account print "パスワードが間違っているようです。" else print #{account}"というアカウントはありません。" end print <<EOS </body> </html> EOS 動作環境はruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]になります。 よろしく、お願いします。

    • ベストアンサー
    • CGI
  • アカウントの登録について

    rubyでアカウントがない場合に新しくアカウントを作るプログラムを、ハッシュを使って作成しようと思っています。表示としては登録ができたら「アカウントを作成しました。」と、アカウントがすでにある場合には「アカウントはすでにあります。別なアカウント名を使ってください。」と表示させたいと思っています。ハッシュに登録まではできるのですが、そこからどう作成したらいいのかわからないので教えてほしいです!初心者で申し訳ないですがよろしくお願いします。 $KCODE = "e" hash_account = {} fo = open("accountData.txt", "r") i = 0 while(line = fo.gets) ary = line.split hash_account[ary[0]] = ary[1] i = i + 1 end fo.close ちなみに、accountData.txtにはアカウント名,パスワードの順に登録があります。 rubyのバージョンはruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]です。

    • ベストアンサー
    • Ruby
  • プログラム実行中に強制停止させる方法

    再び失礼します。 現在以下のようなソースコードを実行しています。 while true do print "commando?\n" command = gets if command == "end" then break end end ループから抜け出すために、getsメソッドを用いて、 endと入力されればループを抜けるという感じにしたいのですが うまく抜け出せず、無限ループに陥ってしまいます。 質問内容は、このように、getsメソッド実行中(?)にプログラムの強制停止を したいのですが、そのような方法はありますでしょうか。(例えばctrl+???とか) 実行環境は、terapadを使用してソースコードを書き、rubyコマンドプロンプトで rubyコマンドを使って実行しています。 それではよろしくお願いいします。 ※投稿確認したのですが、ソースコードにうまくインテンドが挿入されていません・・ 見づらくて申し訳ございません

    • ベストアンサー
    • Ruby
  • DynDNSアカウント取得について

    タイトルのサイトでユーザー名、メールアドレス、パスワード 等、所定の入力しアカウントの取得を試みましたが Successful Password Changeというメールが届き メールに張られてるショートカットを利用し所定の場所で パスワードの変更を行ってますが また上記メールが届きます。 どなたか取得方法をご教示願えませんか?

  • メーラーThunderbirdのアカウントエラー

    メールソフトのThunderbirdを使っています。ある日突然、アカウントエラー「ユーザ ・・・のパスワードを送信できませんでした。 メールサーバ ・・・・・・・からの応答: Incorrect username or password.」というメッセージが出て受信できなくなりました。前日までは普通に使えていたものが、翌朝から、このような状態で使えません。パスワードを聞いてくるので入力してもダメです。パスワードは「保存されているパスワード」から確認しています。 解決方法があればよろしくお願いします。

  • googleアカウントでログインする。

    googleやyahooやfacebookのアカウントでログイン出来るサービス(サイト)は結構ありますが、 これは結構便利だけど例えばそれらすべてのサイトでgoogleアカウントでログインしていた場合 idとパスワードをいくつも覚える必要がない(ブラウザにidとパスワードを記憶さすことで 同じような事が出来ると思いますが)しログインが簡単ですが、もし万が一googleのアカウントが ハッキングされた場合googleアカウントでログインしていた他のサービス(サイト)もハッキング されてしまいますよね? それを防ぐにはサービス(サイト)事にidとpasswordを設定するのが一番良い方法でしょうか?

  • Twitterアカウント作成について

    Twitterのアカウント作成ができません。 この順番でやってるのですが、(アプリから) 新しく作成をおす。 ↓ 呼び名を入力(ニックネームも可) ↓ 携帯電話番号を入力 ↓ 代わりにメールアドレスを入力 ↓ アカウントの作成ができません となります。なぜでしょうか?パスワードも出てこなくて… 呼び名を入力(ニックネームも可)はカタカナでもいいんですよね? それとも@~のやつですか? そして、Webのほうでもやってみたのですが、 代わりにメールアドレスを入力にして、 名前、メールアドレスを入力 ↓ アカウント作成をおす。 ↓ エラーとでます。 どうすればいいのでしょうか? サブ垢を作るのは2回目でこのアカウントを作ったら3つめです。2つだけなんでしょう? Androidです。

  • oracleアカウント作成

    自宅のPCに、oracleから諸々、ダウンロードしたいと考えています。 まず、 「今すぐオラクルのアカウントを作成 」をクリックし、 「MyProfileユーザーの作成 」を行ったのですが、 登録できませんでした。 行った内容は以下の通りです。 アカウントを作成時、 「ユーザー名」・・・・・・・gmailのメールアドレスを入力 「パスワード」・・・・・・・・上記、gmailのパスワード 氏名や、住所など必須項目は、 任意の値を入力して、作成ボタンをクリック。 「 「Password」フィールドの検証エラーを解決してください。 」 が表示されました。 どうすれば良いのか、お教えいただきたいです。 宜しくお願い致します。

  • PCにアカウントロックされたようで…

    初歩的な質問ですみません。 ユーザーアカウントのパスワードを忘れてしまい、何度かパスワードを入力しているうちに、多分合っているはずのパスワードを入力してもサインイン出来なくなってしまいました。PCにアカウントロックがかかってしまったようです。どれくらいで解除され復旧するのでしょうか?ネットでは、vistaぐらいの前のOSだと30分程度とありましたが、Windows 8の場合はどうでしょうか? (何度もパスワードの入力ログインを試みました(30分ぐらい)その場合、アカウントロックの解除は大丈夫でしょうか?) PCは、VAIO「SVE15127CJB」です。 リカバリーはさけたいので、よろしくお願い致します。 ※OKWaveより補足:「ソニー製品」についての質問です。

専門家に質問してみよう