none
データベースの更新 RRS feed

  • 質問

  • しろうとな質問ですいません。

    現在、VB.NETで既にあるIDとパスワードから別の新しいIDとパスワードに、

    更新したいのですがなかなか分からないままとなっています。

    ChangePasswordクラスを使ってデータベースを更新していきたいのですが、

    MembershipProviderを使ってもよく分からない状態です。

    どなたかアドバイス頂けないでしょうか?

    参考のページは読んでいるのですが、全く分からないです。

    2006年7月12日 1:19

すべての返信

  • 利用しようとしているクラス名等をみると、Webアプリだと思いますけど、あってますか?
    ChangePasswordコントロールをデフォルトの状態で使うには、まずユーザがCreateUserWizerdコントロール等を使ってきちんと作成されていること、そのユーザでログオンしていること、あたりが必要になります。
    このあたりの前提条件とかはどうなっているでしょう。

     

    2006年7月12日 4:52
  • お返事ありがとうございます。

    Webアプリです。

    ChangePasswordにはMembershipProviderが必要らしく、

    MembershipProviderにもThemeableAttributeクラスを宣言する必要があるとなっていました。

    なので、

    <AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Property)> _

    Public NotInheritable Class ThemeableAttribute

    と宣言しました。

    その部分で早々エラーとなりました。

    WebアプリでVB.NETを選んでいるので

    Htmlには

    <%@ Page Language="VB"%>と自動で入力されていたのですが、

    その部分がなぜかエラーとなりました。

    何が原因となっているのでしょうか?

     

    2006年7月12日 5:44
  • もしかして、プログラム上からユーザのパスワードを変更したい、ということでしょうか?
    この場合、ChangePasswordクラスは利用できません。

    MembershipUser.ChangePasswordメソッドを利用することになると思います。
    http://msdn2.microsoft.com/ja-jp/library/system.web.security.membershipuser.changepassword.aspx

     

    2006年7月12日 6:19
  • お返事ありがとうございます。

     

    プログラム上というと?

    素人な質問で申し訳ないのですが、

    コンパイルしてから画面で使用したいのですが、この場合もChangePasswordは

    使えないのでしょうか?

     

    2006年7月13日 1:13
  • えっと、ASP.NETの場合、コンパイルは実行時に自動的に行われます。
    なので、「コンパイルしてから」画面で使用、はできないと思います。

    で、ChangePasswordコントロールを利用するには、基本的には貼り付けるだけです。
    ただし、他にログイン画面があって、ログイン済みであるとか、認証を行うための設定とかがきちんと行われていることが前提です。

    まずは、何をどのようにやろうとして、何ができていないのか整理してもらえるとアドバイスのしようがあるかと思います。

     

    2006年7月13日 2:31
  • お返事ありがとうございます。

    すいません、説明ができていませんでした。

     

    プログラムを始めたばかりで、練習をしています。

    決められたIDとパスワードでログインし情報をもって来るシステムを作りたいのです。

    まず、ログインで認証チェックまでは完了しました。

    次にパスワード変更画面を作りすでに持っているIDとパスワードから新しいIDとパスワードを作りたいです。

    そのためにChangePasswordというクラスをしらべたのですが、使うには先にThemeableAttributeクラスを宣言しなければならないと書いてありました。

     

    そのコードが

    <AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Property)> _

    Public NotInheritable Class ThemeableAttribute

               Inheritable Attribute

    で、宣言をしました。

     

    2段目の Class ThemeableAttributeの部分がエラーとなり、

    ステートメントの終わりを指定できないとなりました。

     

    恐らく間違いだらけだと思っているのですが、

    アドバイスをいただきたいです。

    やはりChangePasswordクラス自体が使えないのでしょうか?

    ページ上から使用できるとは書いてありました。

    2006年7月13日 4:21
  • ChangePasswordクラスはログインした状態でのパスワード変更ということだったのでしょうか?

    もしそれなら、結果は使えないとなりますよね。

    2006年7月13日 5:33
  • ChangePasswordクラスというかChangePasswordコントロールは特定のユーザのパスワード変更のためのユーザインタフェースを持ったクラスです。
    ユーザインタフェースの部分も持っているため、基本的にはaspxに貼り付けて使う形になります。

    DisplayUserNameプロパティをtrueにすることで、ユーザを指定してパスワードを変更できるようです。
    ただし、新しいユーザを作るためのものではないので、そういった意図では使えないと思います。

     

    2006年7月13日 6:31
  • お返事ありがとうございます。

     

    aspxに貼り付けということは、ログインページからの作業ということでしょうか?

    IDとパスワードはデータベースに作ってあります。

    そのデータベースから新しいIDとパスワードを更新させたいので、やはり、ChangePasswordクラスは使えるということですよね。

    新しいデータベースはまだ作れないので今は更新だけの作業となっています。

    2006年7月13日 7:25
  • > aspxに貼り付けということは、ログインページからの作業ということでしょうか?

    ログインページに限ったことではありません。
    別にパスワード変更専用のページを作成することもできます。

    > IDとパスワードはデータベースに作ってあります。

    独自につくったデータベースですか?
    CreateUserWizardコントロールとか管理ツールを使って作ったユーザでしょうか。
    独自につくったデータベースであれば、ChangePasswordコントロールでは簡単には対応できないと思います。

    > そのデータベースから新しいIDとパスワードを更新させたいので、

    前にも書いてますが、パスワードの更新はできますが、新しいIDの作成はChangePasswordコントロールではできません。
    CreateUserWizardコントロールを使うようになります。

    このあたりのメンバーシップコントロールが一通り動くサンプルを作ってあるので、試してもらうとイメージがわきやすいかもしれませんね。
    http://sample.dotnetfan.org/LoginSample/

    これらのコントロールは一連のものとして使うことがある意味前提になっています。
    ユーザ名とパスワードを格納するデータベースも専用の決まった形式のデータベースが必要です。

     

    2006年7月13日 8:00
  • お返事ありがとうございます。

     

    Accessデータベースから作っています。

    では、IDとパスワードなのでCreateUserWizardコントロールを使用することになるのですね。

    自分でも調べていたのですが、全く気づきませんでした。

     

    サンプルありがとうございます。

    イメージ的には

     

    UserID

    パスワード

    新しいUserID

    新しいパスワード

    登録ボタン

     

     

    といった感じにしていきたいです。

    2006年7月13日 8:27
  • > Accessデータベースから作っています。

    ということは独自のデータベースを使っているということですね。
    サンプルで使っているようなメンバーシップコントロールを利用するにはMemberShipProviderと呼ばれるものを利用する必要があります。
    デフォルトで用意されているのはSqlMemberShipProviderというSQLデータベースを利用するものです。
    Accessを利用する場合は、このSqlMemberShipProviderが使えません。
    Access用のMemberShipProvierも製品版としては提供されていません。

    #MSDNサイトにサンプルとしての提供はあるようです。

    つまり、何がいいたいかというと、これらのメンバーシップコントロールは「使えない」ので自分ですべて実装してください、ということです。

    まぁ、たとえこれらのコントロールが使えるとしても、

    > UserID
    > パスワード
    > 新しいUserID
    > 新しいパスワード
    > 登録ボタン

    このようなコントロールは提供されていないので、どっちにしろ自分で作ることになります。

    2006年7月13日 8:48
  • お返事ありがとうございます。

    頼ってしまってばかりですいません。

     

    なるほど。そういう意味だったのですね。

    では、使うためには自分でCreateUserWizerdコントロールを実装しなければならないのですね。

    すこし、CreateUserWizerdコントロールについて調べてみたのですが、検索しても特に出てきません。

    ということは、使用するためのサンプルコードはどこにも無いという意味なのでしょうか?

     

    2006年7月13日 9:01
  • CreateUserで調べるのでしたね。

    間違えました。

    2006年7月13日 9:19
  • > 使うためには自分でCreateUserWizerdコントロールを実装しなければならないのですね。

    こういったコントロールが内部で何をやっているかは隠されています。

    #深くさぐっていけばだいたいの推測はつきますが。

    むしろ現状では、これらのコントロールがどう動いているかとかまったく考えずに、単にAccessからユーザとパスワードを取り出してきて表示する部分と、新しいユーザIDとパスワードをAccessに書き込む部分を作るだけで十分なんじゃないでしょうか。
    もともとユーザIDとパスワードを自分で独自に作りこんでいるのですよね?
    であれば、その仕様に沿った形のものを考えればいいと思います。

    最初にChangePasswordを利用したい、との話だったので、ユーザの作成をCreateUserWizaredを使っているものだとばかり思っていろいろ書いてきましたが、それとまったく関係のない実装をしているのですから、コントロールを使うことにこだわらないほうが良いです。

     

     

    2006年7月13日 9:47