@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Web サイト管理ツール以外での新規ユーザーの登録について

1
投稿者投稿内容
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2009-02-15 21:44
お世話になります。

ASP.NET 構成の「Web サイト管理ツール」でユーザやパスワードなど登録していましたが、ASPNETDB を開発環境から使用する処に移した時、新規のユーザーやパスワードを管理者側が登録する場合って通常どうしたらいいでしょうか?

アプリ側にそのように作りこむのでしょうか?
SQL Server Management studio などで追加したりできるのでしょうか?
教えてください。

ASP.NET 2.0 C# VS2005
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2009-02-16 04:50
管理者が利用する専用ページに作ることになるかと。

UserID/Passwordの登録は
CreateUserWizardコントールを使うか
Membership APIを利用して独自に作成できます。

※このページは管理者のみ利用できるようにロール(admin)で管理してください。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2009-02-16 10:46
登録はCreateUserWizardコントロールがあるのでいいんですが、変更や削除が面倒なんですよね。
ロックがかかったときの解除とかも。

IIS7ならIISの管理ツールにこのあたり統合されるんですけど、まぁ、IIS7が今すぐ使える環境は少なそうですね。
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2009-02-16 14:00
どうもお世話になります。幾つか教えてください。

> CreateUserWizardコントロール
このコントロールならツールのログインにあるやつですね。
http://dotnetfan.org/blogs/dotnetfanblog/articles/509.aspx
どっとねっとふぁん様のページ?にもその手法がありました。
これを参考にすれば、できると思うのですが、

Access様が、おっしゃる
> ※このページは管理者のみ利用できるようにロール(admin)で管理してください
について調べていました。今までロールという言葉は、よく聞いてましたが実際使うことがなかったため気にしていませんでした。
これは、たとえば「SQL Server Management Stuido」の「セキュリティ」「ログイン」に登録する名前でさらにそのプロパティでのサーバーロールやユーザーマッピングでの権限という解釈でよろしいでしょうか?
サーバーロールでsysadmin ユーザーマッピングdb_securityadminを持っていれば aspnetdb の操作が可能と考えていいですか?
また、この「セキュリティ」「ログイン」に名前のないユーザーは、このページにアクセスできない。ということでいいですか?
> 変更や削除が面倒なんですよね。
とは、一度作ってしまったものは、サーバ側での処理だから。ということですか?
> ロックがかかったときの解除とかも。
これは、どういう時におきたりするのでしょうか?ウイルスとか?ですか?

質問が多いですが、よろしくお願いします。
サーバ環境は、Windows2003、 SQL 2005、 II6 です。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2009-02-17 06:33
引用:

> ※このページは管理者のみ利用できるようにロール(admin)で管理してください
について調べていました。今までロールという言葉は、よく聞いてましたが実際使うこ>とがなかったため気にしていませんでした。
これは、たとえば「SQL Server Management Stuido」の「セキュリティ」「ログイン」に登録する名前でさらにそのプロパティでのサーバーロールやユーザーマッピングでの権限という解釈でよろしいでしょうか?


ASP.NETのセキュリティを利用します。
USERIDにロールを登録することになります。
詳しいことは、ASP.NETのセキュリティ、メンバーシップなどを調べてください。

引用:

> 変更や削除が面倒なんですよね。
とは、一度作ってしまったものは、サーバ側での処理だから。ということですか?


私はMembership APIで対処しています。
数行のコードを記述するだけで実装できます。

引用:

> ロックがかかったときの解除とかも。
これは、どういう時におきたりするのでしょうか?ウイルスとか?ですか?


たとえば、ログインの再試行回数の制限を超えたとか・・・不正ログイン対策です。

これも、Membership APIで対処しています。

参考までに、
まず、自分がやりたいことを整理したらASP.NETにどのような機能が提供されているか
調べてください。

そして、どうしてもASP.NETが標準で提供している機能では実装できないときに、APIを利用して独自で組み込んでください。




_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2009-02-17 14:17
お世話になります。

> これも、Membership APIで対処しています。
上記を頼りに調べてみました。下記(このWEb内)にズバリがありました。
http://www.atmarkit.co.jp/fdotnet/dotnettips/761aspedituserinfo/aspedituserinfo.html

で、これを元にパスワードなど追加しましたが、削除ができません。理由は、下記コードが呼ばれたとき、引数の usr が null になっています。
[編集]をクリックすると GetAllInfos() が呼ばれて編集モードになり更新後もここが呼ばれています。

コード:
   データの種類                オブジェクト 
   データソースID              ods 
   ビジネス オブジェクトの選択 User 
   データメソッドの定義 SELECT GetAllInfos()、戻り値 List<User> 
                        UPDATE UpdateInfo(User usr) 
                        DELETE DeleteInfo(User usr) 



というようにセットしているためと思いますが、「削除」のときは、直にDeleteInfo(User usr)が呼ばれ引数 usr がヌルになります。
また、このサンプルページは、「ObjectDataSourceコントロール」を使用するよう書かれておりSQLしか使用したことないためエラーの状況がよくわかりません。
どのようにしたら削除できるようになりますでしょうか?
教えてください。

コード:
// 指定されたユーザーの情報を削除するためのDELETEメソッド
public void DeleteInfo(User usr)
{
     Membership.DeleteUser(usr.Name);
}

// 定義済みの全ユーザー情報を取得するためのSELECTメソッド
public List<User> GetAllInfos()
{
      List<User> result = new List<User>();

      // 取得したユーザー情報をUserオブジェクトに詰め替え、
      // 順にListオブジェクトに追加
      foreach (MembershipUser usr in Membership.GetAllUsers())
      {
          User data = new User();
          data.Name = usr.UserName;
          data.KanjiName = (String)ProfileBase.Create(usr.UserName).GetPropertyValue("MyName");
          data.Email = usr.Email;
          data.PassWord = usr.GetPassword();
          data.IsLockedOut = usr.IsLockedOut;
          data.IsAdmin = Roles.IsUserInRole(usr.UserName, "Admin");
          result.Add(data);
     }
     // 出来上がったUserオブジェクトのリストを戻り値として返す
     return result;
}

1

スキルアップ/キャリアアップ(JOB@IT)