SQLite開發(fā)中的Mermbership Provider
偶然在CodeProject中發(fā)現(xiàn)土耳其人mascix已經(jīng)重寫了一套使用SQLite進(jìn)行用戶管理的Membership Provider,原文地址:http://www.codeproject.com/KB/aspnet/SQLiteProviders.aspx
如果對(duì)SQLite本地?cái)?shù)據(jù)庫開發(fā)和數(shù)據(jù)庫進(jìn)行開發(fā)的過程不太了解可以參考我上一篇文章《SQLite開發(fā)準(zhǔn)備》。
我們將mascix的代碼下載到本地打開,目錄中所見的ProviderSql.sql是Membership相關(guān)表的建表SQL文,我們使用SQLite Manager新建TestDatabas.sqlite數(shù)據(jù)庫。當(dāng)然我們也可以使用mascix在他的文章中推薦的SQLite Administrator來進(jìn)行數(shù)據(jù)庫的創(chuàng)建。
SQL文運(yùn)行完,數(shù)據(jù)庫中就會(huì)創(chuàng)建出如下六張數(shù)據(jù)表:
- Roles
- UsersInRoles
- aspnet_applications
- aspnet_profile
- personalization
- users
而mascix所寫的代碼的精華都在App_Code文件夾下的代碼里,為了以后復(fù)用這套代碼,我決定創(chuàng)建一個(gè)單獨(dú)的C#工程命名為SQLiteProviders。
并將App_Code代碼中的名稱空間都修改為SQLiteProviders(這里刪除了mascix.前綴,并不是忽視版權(quán)而是為了遵守代碼規(guī)范)。
新建的工程需要引用:
- System.Web
- System.Data.SQLite.DLL
- System.Web.ApplicationServices
- System.Security
編譯后創(chuàng)建一個(gè)新的Web工程,修改web.config代碼如下:
- <?xml version="1.0"?>
- <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
- <appSettings/>
- <connectionStrings>
- <add name="ConnString"
- connectionString="Data Source=|DataDirectory|users.sqlite;Version=3;" />
- </connectionStrings>
- <system.web>
- <authorization>
- <deny roles="Admin" />
- </authorization>
- <authentication mode="Forms" />
- <compilation debug="true">
- </compilation>
- <roleManager
- defaultProvider="SQLiteRoleProvider"
- enabled="true"
- cacheRolesInCookie="true"
- cookieName=".ASPROLES"
- cookieTimeout="30" cookiePath="/"
- cookieRequireSSL="false"
- cookieSlidingExpiration="true"
- cookieProtection="All">
- <providers>
- <clear/>
- <add
- name="SQLiteRoleProvider"
- type="SQLiteProviders.SQLiteRoleProvider"
- connectionStringName="ConnString"
- applicationName="CoolSpirit"
- writeExceptionsToEventLog="true"/>
- </providers>
- </roleManager>
- <membership defaultProvider="SQLiteMembershipProvider"
- userIsOnlineTimeWindow="15">
- <providers>
- <clear/>
- <add
- name="SQLiteMembershipProvider"
- type="SQLiteProviders.SqliteMembershipProvider"
- connectionStringName="ConnString"
- applicationName="CoolSpirit"
- enablePasswordRetrieval="false"
- enablePasswordReset="true"
- requiresQuestionAndAnswer="false"
- requiresUniqueEmail="true"
- passwordFormat="Hashed"
- writeExceptionsToEventLog="true"/>
- </providers>
- </membership>
- <profile defaultProvider="SQLiteProfileProvider">
- <providers>
- <clear/>
- <add
- name="SQLiteProfileProvider"
- type="SQLiteProviders.SQLiteProfileProvider"
- connectionStringName="ConnString"
- applicationName="CoolSpirit"/>
- </providers>
- <properties/>
- </profile>
- <webParts>
- <personalization defaultProvider="personalizationProvider">
- <providers>
- <clear />
- <add name="personalizationProvider"
- type="SQLiteProviders.SQLitePersonalizationProvider"
- connectionStringName="ConnString"
- applicationName="CoolSpirit"
- description="SQLite Personalization Provider"
- />
- </providers>
- </personalization>
- </webParts>
- </system.web>
- </configuration>
添加對(duì)SQLiteProviders項(xiàng)目的引用,別忘了以鏈接文件引用SQLite.Interop.DLL(見《SQLite開發(fā)準(zhǔn)備》一文)然后編譯Web應(yīng)用程序。
編譯通過后,在Visual Studio的菜單“項(xiàng)目”-“ASP.NET配置”,即可打開ASP.NET配置站點(diǎn),在安全鏈接的右側(cè),如果能看見“使您能夠設(shè)置和編輯用戶、角色和對(duì)站點(diǎn)的訪問權(quán)限。 現(xiàn)有用戶: 0 ”的字樣即代表配置成功,隨后可以像ASP.NET Membership Provider一樣通過登陸控件等實(shí)現(xiàn)系統(tǒng)登陸、用戶注冊(cè)、用戶和角色管理等功能了。
原文鏈接:http://www.cnblogs.com/richardc2k/archive/2011/07/30/2121961.html
【編輯推薦】