2012年7月24日 星期二
2012年3月16日 星期五
ASP.NET網站管理工具的Table新增至自己的資料庫
在ASP.NET 2.0裡提供了好用又強大的會員管理控制項,而且只要在Visual Studio中點擊「ASP.NET組態」就可以馬上使用「ASP.NET網站管理工具」,但預設會在「~/App_Data」之下產生一個「ASPNETDB.MDF」的資料庫檔案,內建了11個系統預設資料表。
如果今天我們想把這些資料表整合到我們自己的資料庫中,那要怎麼做?其實一點都不難,方法有二(其實都是同一個方法,一個使用GUI,一個使用指令):
一、使用GUI(使用檔案總管)
1. 先切換目錄到
C:\Windows\Microsoft.NET\Framework\v2.0.50727;
二、點擊ASPNET_REGSQL.EXE;
三、依畫面輸入「主機名稱、帳號、密碼、資料庫名稱」;
主機名稱可以是本機也可以是遠端,只要你的帳號有足夠的權限,都可以新增資料表,按下確定後,系統就會自動將11個表格新增至你所指定的SQL Server的資料庫中。
二、使用指令(cmd.exe)
如果今天我們想把這些資料表整合到我們自己的資料庫中,那要怎麼做?其實一點都不難,方法有二(其實都是同一個方法,一個使用GUI,一個使用指令):
一、使用GUI(使用檔案總管)
1. 先切換目錄到
C:\Windows\Microsoft.NET\Framework\v2.0.50727;
二、點擊ASPNET_REGSQL.EXE;
三、依畫面輸入「主機名稱、帳號、密碼、資料庫名稱」;
主機名稱可以是本機也可以是遠端,只要你的帳號有足夠的權限,都可以新增資料表,按下確定後,系統就會自動將11個表格新增至你所指定的SQL Server的資料庫中。
二、使用指令(cmd.exe)
1. 先切換目錄到
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727;
2. ASPNET_REGSQL.EXE指令
aspnet_regsql.exe -S papa -U kkbruce -P 1029384756 -d KKDataCenter -A all
按下Enter,一樣,系統會自動新增資料表到指定的資料庫中。
3. 訊息
開始加入下列功能:
Membership
Profile
RoleManager
Personalization
SqlWebEventProvider
.....
已經完成。
-S:SQL Server資料庫主機名稱。
-U:帳號。
-P:密碼。
-d:資料庫名稱。
-A:加入哪些Provider支援,all指全部要支援。
採用ASP.NET內建的會員管理系統,讓各網頁在page_load時能夠驗證會員的角色,並將無此權限的會員導至error.aspx
Protected Sub Page_Load(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles Me.Load
Dim name As String = My.User.Name
Dim db As New SqlDataSource("Data Source=.\SQLEXPRESS;AttachDbfilename=|DataDirectory|\ASPNETDB.MDF; Integrated Security=True; User Instance=True", "")
db.SelectCommand = "select rolename from aspnet_Roles where RoleId = (select RoleId from aspnet_UsersInRoles where userid = (select userid from aspnet_Users where UserName ='" & name & "' ) )"
Dim dv As New Data.DataView
dv = db.Select(New DataSourceSelectArguments)
If dv.Table.Rows(0).Item(0).ToString = "admin" Then
Label1.Text = “會員:” & name & “登入中”
Else
Response.Redirect("error.aspx")
End If
End Sub
當然上述的作法,可以將網頁置於同一資料夾後,再透過ASP.NET組態設定角色的權限即可達到驗證(坊間關於ASP.NET的書非常多,請自行參考),不過有時不同的角色,使用的網頁卻是一樣時,這樣處理又太麻煩,所以我的目的是要在同一資料夾下,利用rolename做為網頁的title,Ex:製作進銷存系統時,若公司有分公司的倉庫,如台北分公司、台中分公司、高雄分公司,則可將rolename設定為台北、台中、高雄等,不過因為ASP.NET組態可以讓會員同時擁有多個角色,所以須特別注意不可讓會員同時擁有兩個分倉以上的角色。
Protected Sub Page_Load(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles Me.Load
Dim name As String = My.User.Name
Dim db As New SqlDataSource("Data Source=.\SQLEXPRESS;AttachDbfilename=|DataDirectory|\ASPNETDB.MDF; Integrated Security=True; User Instance=True", "")
db.SelectCommand = "select rolename from aspnet_Roles where RoleId = (select RoleId from aspnet_UsersInRoles where userid = (select userid from aspnet_Users where UserName ='" & name & "' ) )"
Dim dv As New Data.DataView
dv = db.Select(New DataSourceSelectArguments)
If dv.Table.Rows(0).Item(0).ToString = "guest" Then
Response.Redirect("error.aspx")
Else
Label_title.Text = dv.Table.Rows(0).Item(0).ToString & “倉庫存管理系統”
End If
End Sub
多级会员管理系统
设计方法如下:
1. 建立部门、用户组;
2. 建立权限划分,添加,删除,复制,粘贴,编辑,导出,备份等等,权限进行编号,例如添加(1),删除(2);
3. 建立用户,分配部门;
4. 细化用户组,将用户绑定用户组;
4.1 建立各个版块名称和绑定版块权限ID(进入版块时进行判断)
5. 细化权限划分部分内容,允许有绑定用户组和用户两种方法,绑定用户组的同时可以将用户组下所有用户进行绑定;
5.1 权限划分部门加入各个版块名称,后面依次对应着所有的权限划分
6. 拼装权限代码,存入数据表
登陆时取出权限代码,存入缓存。注销时清除缓存内容。
1. 建立部门、用户组;
2. 建立权限划分,添加,删除,复制,粘贴,编辑,导出,备份等等,权限进行编号,例如添加(1),删除(2);
3. 建立用户,分配部门;
4. 细化用户组,将用户绑定用户组;
4.1 建立各个版块名称和绑定版块权限ID(进入版块时进行判断)
5. 细化权限划分部分内容,允许有绑定用户组和用户两种方法,绑定用户组的同时可以将用户组下所有用户进行绑定;
5.1 权限划分部门加入各个版块名称,后面依次对应着所有的权限划分
6. 拼装权限代码,存入数据表
登陆时取出权限代码,存入缓存。注销时清除缓存内容。
訂閱:
文章 (Atom)