2010年7月17日土曜日

プロコン2010-1その1

最近コードを書いていないので、プロコン題材にコードを書いてみようかと。
課題1から、今回のおだいは、Webアプリでユーザ管理と本の貸し出し管理とのこと。

HHHでもらったVisual Studio 2008 Standard Edition相当を使います。(asp.net 3.5ってことね。)

簡単なところから、ユーザの管理とログイン部分だけを先に作ってみます。下の画面の1~4までの部分。

【設計方針】
まずは以下の点ぐらい。
・asp.net標準機能を多少無理してでも極力使う。
・画面間引継ぎ項目は基本クエリストリングで行う。

【画面】
CSV形式で、画面番号,日本語画面名,物理aspx名,格納フォルダ,前提画面番号,引継ぎ内容,画面機能説明
1,ログイン画面,Login.aspx,~/,,,ログインする(ASP.NETではデフォルトで未権限のページに遷移した場合、アプリケーションルートのlogin.aspxにリダイレクトするので名前はこのままにする。)
2,ユーザ追加画面,AddUser.aspx,~/Admin/,,,ユーザーを登録する
3,ユーザ変更画面,ModifyUser.aspx,~/Admin/,,,ユーザーを変更する
4,ユーザ削除画面,DeleteUser.aspx,~/Admin/,,,ユーザーを削除する
5,検索画面,SearchBook.aspx,~/User/,,,書籍を検索する
6,追加画面,AddBook.aspx,~/User/,,,書籍を登録する
7,変更画面,ModifyBook.aspx,~/User/,,,書籍を変更する
8,削除画面,DeleteBook.aspx,~/User/,,,書籍を削除する
9,貸出画面,RentalBook.aspx,~/User/,,,書籍を借りる
10,返却画面,ReturnBook.aspx,~/User/,,,書籍を返す

あれ、前提画面や引継ぎ内容がなくなっちゃった。

【ユーザロール】
 システムにはAdminsとUsersのロールがあり、ユーザにロールが複数付けれるものとする。

【セキュリティ】
未ログインユーザは、~/参照可能
Adminsのロールを持つユーザのみ、~/Admin/参照可能
Usersのロールを持つユーザのみ、~/User/参照可能

【ユーザ,ロール管理のDB構造】
 asp.net標準の(SQL Server Expressを使った)ユーザ管理を利用

【本の管理のDB構造】
 あとで

【本の貸し出しの内部クラス設計】
 あとで



で、Visual Studioを起動。
新規プロジェクトで以下を設定。


セキュリティ設定







ここで、ローカルからインターネットに変更して


終了ボタンを押すと、


画面は戻って、Web.configのauthentication modeがWindowsからFormsに変わる。

続いて、「ロールの有効化」を選ぶと、ロールの管理が選べれるようになって、Web.configのroleManager enabled="true"が追加される。

ユーザの追加でこんな感じでユーザを追加する。


manoとmano2を追加する。

セキュリティタブで戻って、ロールの作成または管理でAdminsとUsersを追加する。
ユーザの管理でmanoにAdminsとUsersロールの両方を、mano2にUsersロールだけを与える。
以下の感じになる。


この設定は、MembershipプロバイダとRoleプロバイダを経由した設定なので、Web.configに変更はなし。

以下のようにAdminとUserフォルダを作成し、



asp.netの構成の方で、アクセス規則のアクセス規則の作成を選択
こんな感じで、AdminフォルダにAdminsロールの許可と全てのユーザの拒否を、UserフォルダにUsersロールの許可と全てのユーザの拒否を付与。


アクセス規則の管理で、順番がロールユーザを許可→すべてのユーザを拒否になっていることを確認する。



こうすると、~/User/や~/Admin/フォルダ配下にWeb.configが作成され以下のようになる。(VSのプロジェクト外なので全てのファイルを表示ボタンを押さないと表示されないのですが。)


で、セキュリティ設定は終わり。
もっともWeb.configの変化を見るために1ステップずつやったわけですが、
「手順に従ってセキュリティを構成するには、セキュリティ設定ウィザードを使用してください。 」リンクをクリックすると上のことがもっと簡単に出来たんだけどね。
今回はここまで