很多朋友呢,都說在 Oracle 上是無法實現 Membership 機制的,
不過很可惜的是,
本篇博文就是旨在告訴這些朋友們如何在 Oracle 資料庫上實現 Membership 機制。
前面的一些博文呢,介紹了很多關於如何使用 C# 來操作 Oracle 資料庫,
其中也涉及到了很多的關於在 Visual Studio 中如何完成對 Oracle 資料庫的控制,
也寫了很多關於 Membership ,以及 Roles 以及 Profile 這些內容的博文,
但是介紹都是在基於 Sql Server 資料庫之上完成的,
(如果您還不熟悉如何在 Sql Server 上實現 Membership 的話,筆者前面有很多關於這一塊的博文,
您可以先閱讀那些在 Sql Server 上實現 Membership 機制的博文,然後再來看如何在這篇博文)
但是這一篇博文呢,我將會介紹如何在 Oracle 資料庫之上使用 Membership 這套機制了,
首先呢,要完成在 Oracle 資料庫之上使用 Membership 這套機制,還是需要有很多的準備工作的,
先來看環境吧,直接看我的環境的了,
我的環境呢,是 Win7 的系統(建議用 Server 版的系統),Visual Studio Team System 2008,
Oracle 11gR1 ,然後安裝了最新版的 ODT.NET ,還是給個 ODT.NET 的
http://www.oracle.com/technology/global/cn/software/tech/dotnet/odt_index.html
安裝了 ODT.NET 後,便可以再 Visual Studio 中直接建立與 Oracle 資料庫的串連了,
您可以在“伺服器總管”中直接與 Oracle 建立串連
這樣就很容易的在 Visual Studio 中建立了與 Oracle 資料庫的串連,
而後就是要完成在 Oracle 資料庫中註冊對 Membership ,
這個呢,
您可以完全把他看做是通過使用 ASPNET_REGSQL.exe 來完成對 Sql Server 資料庫的註冊一樣,
只不過這裡實現的是對 Oracle 的註冊而非 Sql Server ,
從前面可以看出我在 Visual Studio 中是使用的 Oracle 資料庫中
預定的 SCOTT 使用者進行的登入 Oracle 資料庫,
由於要完成對 OracleASPNETProviders 的註冊,必須在資料庫中要有一定的許可權,
然而僅 SCOTT 使用者而言,許可權不夠,所以當然是無法註冊成功的,
當然咯,您也完全可以使用 SYSTEM 使用者,但是這個許可權也大了點吧,
如果要完成對 OracleASPNETProviders 的註冊,您在資料庫中的使用者必須要有如下許可權,
Change notification
Create job
Create procedure
Create public synonym
Create role
Create session
Create table
Create view
Drop public synonym
Unlimited Tablespace
下面呢就是要完成對 Oracle 資料庫中 SCOTT 使用者指派許可權了,
因為要實現給 SCOTT 使用者指派許可權的話,您必須先以 SYSTEM 使用者進行登陸 Oracle 資料庫,
這個呢,很簡單的,您只需要在 SqlPlus 下面以 SYSTEM 使用者登入就 OK 了,
然後執行下面的授權語句,
GRANT CHANGE NOTIFICATION,
CREATE JOB,
CREATE PROCEDURE,
CREATE PUBLIC SYNONYM,
CREATE ROLE,
CREATE SESSION,
CREATE TABLE,
CREATE VIEW,
DROP PUBLIC SYNONYM,
UNLIMITED TABLESPACE
TO "SCOTT"
這樣便可以完成對 Oracle 資料庫中將要進行註冊的使用者 SCOTT 進行許可權的分配,
下面就開始註冊 OracleASPNETProviders 了,
從 Visual Studio 的 “工具”->“運行 SQL*Plus 指令碼”,
然後找到將要啟動並執行指令檔,這個指令檔呢,
您必須要安裝 Oracle Provider For ASP.NET 這個組件才會有,
然而在 ODT.NET 中一般都會繼承這個組件進去,而且像比較高的版本的資料庫,
比如 10g 或者是 11g
在安裝資料庫的時候便會同時安裝 Oracle Provider For ASP.NET ,
您必須找到您的 ODT.NET 安裝目錄,
比如我的機器上是,
D:\app\XiaoZhen\product\11.1.0\client_1\ASP.NET\SQL
在這個目錄下有很多的 .sql 檔案,您可以發現其中有一個比較特殊的,
您可以直接運行這個指令檔就可以完全註冊您的 Oracle 資料庫了,
如果您使用記事本開啟上面標記的這個 .sql 檔案的話,
您可以發現其實這個檔案只不過是逐步的運行了其他的指令檔而已,
當然,如果您在完成了註冊後又不想註冊了,那麼這個目錄下呢也有一個檔案,
UninstallAllOracleASPNETProviders.sql
這個檔案呢就是用來取消註冊的,
下面就回到上面的 “運行 SQL*Plus 指令碼“這個話題上來,
這樣,便完成了在 Oracle 資料庫中註冊 Membership 機制了,
下面就是要 Sql Developer 來查看一下上面所作的操作的結果吧,
可以看到在此處建立立了 14 個資料表(以前註冊 Sql Server 時只建立 11 個資料表),
這些資料表呢便是 Oracle 來支撐 Membership 這套機制時所需的表了,
也可以看到其中有 USERS 表啊,有 MEMBERSHIP 表啊等等熟悉的東西,
當然了,上面的註冊過程呢,還建立了很多的預存程序和視圖啊,索引這些的,
不過在此就不多做介紹了,
上面呢,便完成了在 Oracle 資料庫中註冊 Membership 機制,
接下來就是應該介紹如何使用了,但是限於篇幅呢,在此不會就 Membership 機制的使用多做介紹,
我所側重的重點是如何在項目中使用在 Oracle 中註冊的 Membership 機制,
先是建立一個項目,然後開啟其對應的 ”ASP.NET 組態工具(ASP.NET 網站管理工具)“
切換到提供者頁上,
而後要選擇”OracleMembershipProvider“和”OracleRoleProvider”,
但是此時還並沒有完全建立好在 Oracle 資料庫中使用 Membership 機制,
比如,您可以將” ASP.NET 配置“工具切換到”安全“頁面上,您會發現,
很明顯,雖然指定了 Oracle 資料庫提供者,但是此時還無法串連上 Oracle 資料庫,
因為您還沒有給出串連 Oracle 資料庫的字串,您當然無法串連上 Oracle 資料庫啦,
所以下面的操作就是,
您可以先將您建立的這個 Web 項目部署到您自己的 IIS 上面,
然後,
修改上面畫出的兩個資料庫連接字串,比如我的將兩個都改為
DATA SOURCE=ORACLE;PERSIST SECURITY INFO=False;
USER ID=SCOTT;Password=tiger;"
這樣的話,您再開啟您的項目的 web.config 檔案,
您可以發現,
也就是說,我們上面對 IIS 裡面對 Web 網站所作的操作全部都只是針對 web.config 進行的設定,
如果您比較熟悉的話,您完全可以免去前面使用 IIS 來設定資料庫連接字串這一步,
而直接在 web.config 中完成就 OK 了,
此時在來將前面的 ”ASP.NET 組態工具“切換到 ”安全“頁面上,
可以看到此時可以成功串連上 Oracle 資料庫了,
那麼接下來就是使用 "ASP.NET 組態工具" 來完成一些操作了,
比如啟用 Forms 驗證,比如建立一個角色,比如建立一個使用者啊,
以此來說明 Membership 在 Oracle 資料庫上的成功使用,
首先是啟用 Froms 驗證,
然後再建立一個使用者,
建立了使用者後,我們再從 Oracle 資料庫中來驗證剛才建立的使用者 BaoBeiMe 是否建立成功,
從這裡,便可以驗證出在 Oracle 中已經成功的建立了一個成員資格,
即添加了一個具有成員資格的使用者 BaoBeiMe!!!