Asp.Net Web uygulamalarınızda Firebird Database kullanmanızı kesinlikle destekleyen ve bununla ilgili onlarca yazı yazarak web üzerinden en çok ve en çabuk ulaşılan bir blog olarak.Bu blogtaki Firebird konumuzun "Asp.Net ile kullanmaya alıştığınız Ms Sql MemberShip" özelliğini bu kez Firebird Database ile yapabileceğinizi söylemek isterim.
Genelde Asp.Net web uygulamalarında Ms Sql ve AspNet Security her zaman tercih edilir.Sanırım bunun asıl nedeni Visual Studio serisinin kullanıcıya AspNet Configration ile bir kaç tıkla sağladığı provider desteği ile uygulama güvenliğinizin hazır hale getiriliyor olmasıdır.Sizin kodlara dahil olmanız gerekmeden hazırlanan uygulama dizin güvenliğiniz için yapmanız gereken users ve admin dizinlerinize basitçe Visual Studio serisinin login araçlarını uygulamanıza alarak yolunuza devam edebilmenizdir.Ms Sql ve Asp.Net için bu ne kadar konforlu bir sonuçtur.Fakat Firebird veritabanını kullanmak ve Ms Sql lisansını, kapladığı alanı düşünürsek hayli verimli ve güzel bir deneyimdir.Eğer sizde benim gibi düşünüyorsanız bu blogla Asp.Net ve Firebird Database MemberShip için ilk bilgilere hemen geçelim...
Bunun kolay ve hızlı bir sonuç olmayacağını blogun başında söyliyeyim ki okumaya devam ederken canınız sıkılıp kim uğraşacak bununla diyerek blogu terketmeyesiniz.Peki neden zor çünkü Firebird veritabanınızı kendiniz hazırlayacaksınız, webconfig düzenleyeceksiniz.Elbette bazı kısımlarda Visual Studio 2008-2010 size yardım edecek ama işin çoğunluğunu siz yapacaksınız.Webte bu kaynağa iki yerde rastlamanız münkündür Firebird 1.0 ve Firebird 2.0 serisi için bunu yapabiliyoruz.bende bu kaynaklardanda faydalanmak isteyebileceğiniz için her ikisinede yeri geldiğinde atıfta bulunarak işinizi biraz daha kolaylaştıracağım.Şimdi gerekli yazılımlarımızı, Firebird sürüm ve dll dosyalarımızın listesine bakalım...Herşeyi adım adım yapacağız...
Gereksinimler ve açıklamaları
- Visual Studio ile yapacağız
- Firebird 2.5 Server kurulumu yapmış olmamız gerekir.
- FirebirdSql Web.Provider.dll 2.5.0.0 gerekir (NetProvider kurmalısınız)
- FirebirdSql ADO.Net Data Provider.dll 2.5.2.0
- IBEXPERT Dabase Manager kullanmamız gerekir.(Interbase ve Firebird için ben bunu kullanıyorum)
Tüm bunlar hakkında bilgileri Firebird bloglarımdan ve yandaki listedeki konuları sırasıyla okuyarak olabildiğince faydalanabilirsiniz.Şimdide bu yukardaki gereçler gibi ilgili web adreslerini vererek arayacaklarınızı bulmanızı biraz daha kolaylaştırayım.
- Firebird Org Conectivity ile ihtiyaclarınızı sürüme uygun olarak bu adresten alabilirsiniz.
- Firebird-Sql ve başlangıç bilgilerini yine benim blogum olan Firebird-Sql Blog yada
- Bu blog içeresinde ayrıntılı olarak anlattığım Asp.Net ve Firebird blog sayfasından okuyabilirsiniz.
- IBEXPER Database Manager ile ilgili bilgileride sayfanın sağında bulunan listeden göz atabilirsiniz.
Diğer başvuru kaynakları
- FirebirdMembership Security ile ilgili en eski kaynak Codemuch.com adresinde mevcuttur.
- FirebirdMembership Security konulu diğer bir yazı ise todormihailov.com adresindedir.
- Ayrıca bu konuyla ilgili en kapsamlı bilgiyi şuanda okuduğunuz SerkanŞenyüz blogları verir. Biraz megolamanlık her zaman iyidir.
Evet bu kadar detaydan sonra ilk yapacaklarımız sırasıyla Firebird veritabanımızı hazırlamak olacak.Burada şunuda belirtmeliyim bu konuyu sadece bir blogta anlatmamız pek münkün değil bu yüzden bu konuyu bir seri haline getirerek yazacağım.Bu blogta öncelikle veritabanımızı oluşturacağız.
1-Firebird MemberShip Security Database FirebirdSql Kod
IBEXPERT Manager açın ve Sql Executive yada Ctrl 12 ile aşağıdaki kodları yapıştırın...
Size kolay olmayacak demiştim...
F9 ile Run komutu sonrasında C:\AspNetSecurityTest.fdb yolunda yeni bir Firebird Database edinmiş oldunuz.Şimdi Yine IBEXPERT ile oluşan Firebird veritabanına bir bakalım.
IBEXPERT ile bu Firebird veritabanını Registry ederek içerisini bir kontrol etmemiz gerekli çünkü database için yapacağımız bazı şeyler var...
Evet Tables-Stored Procedures ve Trigers yapıları tamamlanmış fakat eksiklikler var Ms Sql Membership ile Asp.Net web uygulamanızda kullanmışsanız bu elementlerin daha çok olduğunu bilirsiniz.Veritabanımıza tekrar geri döneceğiz onu bu haliyle bırakalım ve Visual Studio ile yeni bir Asp.Net web projemizioluşturalım. Burada bazı önemli detayları atlamadan uygulamanız gerekiyor....
Visual Studio Asp.Net Firebird MemberShip Security Project
Yazının başında bahsettiğim FirebirdSql.dll dosyalarının Bin klasörü içerisinde olduklarını sanırım görebiliyorsunuz.Bunları ayrıca Visual Studio Property Pages içerisinden kontrol ederek References(referanslar) kısmında olup olmadıklarına bakmamız gerekir.Bazen bu konuda Visual Studio görmezden gelebiliyor.Eğer böyle bir şey olursa Browse edip bu dll leri görmesini sağlamamız gerekecektir.Şimdi Visual Studio ile Asp.net web uygulamamızın web.config dosyasını yazıcaz zaten en önemli kısımda budur.Nedense Firebird kullanmaya çalışan herkes connection string kısmında sıkıntı yaşar, veritabanına bağlanamaz ve Firebird kullanmaktan vazgeçer.Bu yüzden bunu biraz daha detaylı anlatacağım.
Asp.Net Firebird Membership Security Web.config - Firebird Connection String
Bir sonraki Asp.Net Firebird Membership Security blogunda görüşmek üzere...
Genelde Asp.Net web uygulamalarında Ms Sql ve AspNet Security her zaman tercih edilir.Sanırım bunun asıl nedeni Visual Studio serisinin kullanıcıya AspNet Configration ile bir kaç tıkla sağladığı provider desteği ile uygulama güvenliğinizin hazır hale getiriliyor olmasıdır.Sizin kodlara dahil olmanız gerekmeden hazırlanan uygulama dizin güvenliğiniz için yapmanız gereken users ve admin dizinlerinize basitçe Visual Studio serisinin login araçlarını uygulamanıza alarak yolunuza devam edebilmenizdir.Ms Sql ve Asp.Net için bu ne kadar konforlu bir sonuçtur.Fakat Firebird veritabanını kullanmak ve Ms Sql lisansını, kapladığı alanı düşünürsek hayli verimli ve güzel bir deneyimdir.Eğer sizde benim gibi düşünüyorsanız bu blogla Asp.Net ve Firebird Database MemberShip için ilk bilgilere hemen geçelim...
Bunun kolay ve hızlı bir sonuç olmayacağını blogun başında söyliyeyim ki okumaya devam ederken canınız sıkılıp kim uğraşacak bununla diyerek blogu terketmeyesiniz.Peki neden zor çünkü Firebird veritabanınızı kendiniz hazırlayacaksınız, webconfig düzenleyeceksiniz.Elbette bazı kısımlarda Visual Studio 2008-2010 size yardım edecek ama işin çoğunluğunu siz yapacaksınız.Webte bu kaynağa iki yerde rastlamanız münkündür Firebird 1.0 ve Firebird 2.0 serisi için bunu yapabiliyoruz.bende bu kaynaklardanda faydalanmak isteyebileceğiniz için her ikisinede yeri geldiğinde atıfta bulunarak işinizi biraz daha kolaylaştıracağım.Şimdi gerekli yazılımlarımızı, Firebird sürüm ve dll dosyalarımızın listesine bakalım...Herşeyi adım adım yapacağız...
Gereksinimler ve açıklamaları
- Visual Studio ile yapacağız
- Firebird 2.5 Server kurulumu yapmış olmamız gerekir.
- FirebirdSql Web.Provider.dll 2.5.0.0 gerekir (NetProvider kurmalısınız)
- FirebirdSql ADO.Net Data Provider.dll 2.5.2.0
- IBEXPERT Dabase Manager kullanmamız gerekir.(Interbase ve Firebird için ben bunu kullanıyorum)
Tüm bunlar hakkında bilgileri Firebird bloglarımdan ve yandaki listedeki konuları sırasıyla okuyarak olabildiğince faydalanabilirsiniz.Şimdide bu yukardaki gereçler gibi ilgili web adreslerini vererek arayacaklarınızı bulmanızı biraz daha kolaylaştırayım.
- Firebird Org Conectivity ile ihtiyaclarınızı sürüme uygun olarak bu adresten alabilirsiniz.
- Firebird-Sql ve başlangıç bilgilerini yine benim blogum olan Firebird-Sql Blog yada
- Bu blog içeresinde ayrıntılı olarak anlattığım Asp.Net ve Firebird blog sayfasından okuyabilirsiniz.
- IBEXPER Database Manager ile ilgili bilgileride sayfanın sağında bulunan listeden göz atabilirsiniz.
Diğer başvuru kaynakları
- FirebirdMembership Security ile ilgili en eski kaynak Codemuch.com adresinde mevcuttur.
- FirebirdMembership Security konulu diğer bir yazı ise todormihailov.com adresindedir.
- Ayrıca bu konuyla ilgili en kapsamlı bilgiyi şuanda okuduğunuz SerkanŞenyüz blogları verir. Biraz megolamanlık her zaman iyidir.
Evet bu kadar detaydan sonra ilk yapacaklarımız sırasıyla Firebird veritabanımızı hazırlamak olacak.Burada şunuda belirtmeliyim bu konuyu sadece bir blogta anlatmamız pek münkün değil bu yüzden bu konuyu bir seri haline getirerek yazacağım.Bu blogta öncelikle veritabanımızı oluşturacağız.
1-Firebird MemberShip Security Database FirebirdSql Kod
IBEXPERT Manager açın ve Sql Executive yada Ctrl 12 ile aşağıdaki kodları yapıştırın...
SET SQL DIALECT 3; SET NAMES NONE; CREATE DATABASE 'C:\AspNetSecurityTest.fdb' USER 'SYSDBA' PASSWORD 'masterkey' PAGE_SIZE 4096 DEFAULT CHARACTER SET UNICODE_FSS; CREATE TABLE ROLES ( ROLENAME VARCHAR(255) NOT NULL, APPLICATIONNAME VARCHAR(255) NOT NULL ); CREATE TABLE USERSINROLES ( USERNAME VARCHAR(255) NOT NULL, ROLENAME VARCHAR(255) NOT NULL, APPLICATIONNAME VARCHAR(255) NOT NULL ); CREATE TABLE SESSIONS ( SESSION_ID VARCHAR(80) NOT NULL, APPLICATION_NAME VARCHAR(100) NOT NULL, CREATED TIMESTAMP, EXPIRES TIMESTAMP, LOCK_DATE TIMESTAMP, LOCK_ID INTEGER, TIMEOUT INTEGER, LOCKED SMALLINT, SESSION_ITEMS BLOB SUB_TYPE 1 SEGMENT SIZE 4096, FLAGS INTEGER ); CREATE UNIQUE INDEX SESSIONS_IDX1 ON SESSIONS (SESSION_ID, APPLICATION_NAME); CREATE DOMAIN BOOL AS SMALLINT DEFAULT 0 NOT NULL CHECK (value=1 or value=0 or value is null); CREATE TABLE Users ( PKID CHAR(36) CHARACTER SET OCTETS NOT NULL PRIMARY KEY, USERNAME VARCHAR(255) character set UNICODE_FSS NOT NULL, APPLICATIONNAME VARCHAR(255) character set UNICODE_FSS NOT NULL, EMAIL VARCHAR(128) character set UNICODE_FSS NOT NULL, COMMENT VARCHAR(255) character set UNICODE_FSS, USERPASSWORD VARCHAR(128) character set UNICODE_FSS NOT NULL, PASSWORDQUESTION VARCHAR(255) character set UNICODE_FSS, PASSWORDANSWER VARCHAR(255) character set UNICODE_FSS, ISAPPROVED BOOL, LASTACTIVITYDATE TIMESTAMP, LASTLOGINDATE TIMESTAMP, LASTPASSWORDCHANGEDDATE TIMESTAMP, CREATIONDATE TIMESTAMP, ISONLINE BOOL, ISLOCKEDOUT BOOL, LASTLOCKEDOUTDATE TIMESTAMP, FAILEDPASSWORDATTEMPTCOUNT INTEGER, FAILEDPASSWORDATTEMPTSTART TIMESTAMP, FAILEDPASSWORDANSWERCOUNT INTEGER, FAILEDPASSWORDANSWERSTART TIMESTAMP ); CREATE TABLE PROFILES ( PKID CHAR(36) CHARACTER SET OCTETS NOT NULL, PROPERTYNAMES BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET UNICODE_FSS, PROPERTYVALUESSTRING BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET UNICODE_FSS, PROPERTYVALUESBINARY BLOB SUB_TYPE 0 SEGMENT SIZE 80, LASTUPDATEDDATE TIMESTAMP, LASTACTIVITYDATE TIMESTAMP, ISUSERANONYMOUS BOOL /* BOOL = SMALLINT DEFAULT 0 CHECK (value=1 or value=0 or value is null) */, APPLICATIONNAME VARCHAR(256) CHARACTER SET UNICODE_FSS ); ALTER TABLE PROFILES ADD CONSTRAINT PK_PROFILES PRIMARY KEY (PKID); SET TERM ^ ; CREATE PROCEDURE PROFILES_DELETEINACTPROFILES ( APPLICATIONNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, PROFILEAUTHOPTIONS INTEGER, INACTIVESINCEDATE TIMESTAMP) AS begin DELETE FROM Profiles WHERE APPLICATIONNAME = :applicationname AND (LastActivityDate <= :InactiveSinceDate) AND ( (:ProfileAuthOptions = 2) OR (:ProfileAuthOptions = 0 AND IsUserAnonymous = 1) OR (:ProfileAuthOptions = 1 AND IsUserAnonymous = 0) ) ; end^ CREATE PROCEDURE PROFILES_DELETEPROFILE ( APPLICATIONNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, USERNAME VARCHAR(256) CHARACTER SET UNICODE_FSS) AS declare variable userid char(36) character set octets; begin userid = null; select pkid from users where applicationname = :applicationname and username = :username into :userid; if (userid is null) then userid = :username; delete from profiles where pkid = :userid; end^ CREATE PROCEDURE PROFILES_GETNBOFINACTPROFILES ( APPLICATIONNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, PROFILEAUTHOPTIONS INTEGER, INACTIVESINCEDATE TIMESTAMP) RETURNS ( NB INTEGER) AS begin nb = 0; SELECT COUNT(*) FROM Profiles WHERE Applicationname = :applicationname AND (LastActivityDate <= :InactiveSinceDate) AND ((:ProfileAuthOptions = 2) OR (:ProfileAuthOptions = 0 AND IsUserAnonymous = 1) OR (:ProfileAuthOptions = 1 AND IsUserAnonymous = 0)) INTO :nb; suspend; end^ CREATE PROCEDURE PROFILES_GETPROFILES ( APPLICATIONNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, PROFILEAUTHOPTIONS INTEGER, USERNAMETOMATCH VARCHAR(256) CHARACTER SET UNICODE_FSS, INACTIVESINCEDATE TIMESTAMP, PAGEINDEX INTEGER, PAGESIZE INTEGER) RETURNS ( USERNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, ISANONYMOUS SMALLINT, LASTACTIVITYDATE TIMESTAMP, LASTUPDATEDDATE TIMESTAMP) AS declare variable pkid char(36) character set octets; declare variable spkid char(16) character set octets; declare variable pagelowerbound integer; declare variable pageupperbound integer; BEGIN pagelowerbound = pagesize * pageindex; PageUpperBound = pagesize; FOR SELECT FIRST(:pageupperbound) SKIP(:pagelowerbound) pkid,isuseranonymous,lastactivitydate,lastupdateddate FROM Profiles WHERE (applicationname = :applicationname) AND (:inactivesincedate IS NULL OR LastActivityDate <= :InactiveSinceDate) AND ((:ProfileAuthOptions = 2) OR (:ProfileAuthOptions = 0 AND ISUSERANONYMOUS = 1) OR (:ProfileAuthOptions = 1 AND ISUSERANONYMOUS = 0)) INTO :pkid,:IsAnonymous,:lastactivitydate,:lastupdateddate DO BEGIN username = NULL; IF (:IsAnonymous = 1) THEN username = pkid; ELSE BEGIN spkid = CAST(:pkid AS CHAR(16)); SELECT userName FROM users WHERE pkid = :spkid INTO :username; END IF (usernametomatch IS NOT NULL) THEN BEGIN IF (UPPER(username) LIKE :usernametomatch) THEN SUSPEND; END ELSE SUSPEND; END END^ CREATE PROCEDURE PROFILES_GETCOUNTPROFILES ( APPLICATIONNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, PROFILEAUTHOPTIONS INTEGER, USERNAMETOMATCH VARCHAR(256) CHARACTER SET UNICODE_FSS, INACTIVESINCEDATE TIMESTAMP) RETURNS ( TOTALRECORDS INTEGER) AS declare variable pkid char(36) character set octets; declare variable spkid char(16) character set octets; declare variable isanonymous smallint; declare variable username varchar(256) character set unicode_fss; BEGIN totalrecords = 0; IF (usernametomatch IS NOT NULL) THEN FOR SELECT pkid,isuseranonymous FROM Profiles WHERE (applicationname = :applicationname) AND(:inactivesincedate IS NULL OR LastActivityDate <= :InactiveSinceDate) AND ((:ProfileAuthOptions = 2) OR (:ProfileAuthOptions = 0 AND ISUSERANONYMOUS = 1) OR (:ProfileAuthOptions = 1 AND ISUSERANONYMOUS = 0)) INTO :pkid , :isanonymous DO BEGIN username = NULL; IF (:isanonymous = 1) THEN username = pkid; ELSE BEGIN spkid = CAST(:pkid AS CHAR(16)); SELECT userName FROM users WHERE pkid = :spkid INTO :username; END IF (UPPER(username) LIKE :usernametomatch) THEN totalrecords = totalrecords + 1; END ELSE SELECT COUNT(1) FROM Profiles WHERE (applicationname = :applicationname) AND (:inactivesincedate IS NULL OR LastActivityDate <= :InactiveSinceDate) AND ((:ProfileAuthOptions = 2) OR (:ProfileAuthOptions = 0 AND ISUSERANONYMOUS = 1) OR (:ProfileAuthOptions = 1 AND ISUSERANONYMOUS = 0)) INTO :totalrecords; SUSPEND; END^ CREATE PROCEDURE PROFILES_GETPROPERTIES ( APPLICATIONNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, USERNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, CURRENTTIMEUTC TIMESTAMP) RETURNS ( PROPERTYNAMES BLOB SUB_TYPE 1 SEGMENT SIZE 80, PROPERTYVALUESSTRING BLOB SUB_TYPE 1 SEGMENT SIZE 80, PROPERTYVALUESBINARY BLOB SUB_TYPE 0 SEGMENT SIZE 80) AS declare variable userid char(36) character set octets; begin userid = null; PropertyNames = null; PropertyValuesString = null; PropertyValuesBinary = null; userid = null; select pkid from users where applicationname = :applicationname and username = :username into :userid; if (userid is null) then userid = :username; if (userid is not null) then begin select first(1) PropertyNames, PropertyValuesString, PropertyValuesBinary from profiles where pkid = :userid into :propertynames,:propertyvaluesstring,:propertyvaluesbinary; if (propertynames is not null) then begin suspend; UPDATE profiles set profiles.lastactivitydate = :currenttimeutc where profiles.pkid = :userid; end end end^ CREATE PROCEDURE PROFILES_SETPROPERTIES ( APPLICATIONNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, PROPERTYNAMES BLOB SUB_TYPE 1 SEGMENT SIZE 80, PROPERTYVALUESSTRING BLOB SUB_TYPE 1 SEGMENT SIZE 80, PROPERTYVALUESBINARY BLOB SUB_TYPE 0 SEGMENT SIZE 80, USERNAME VARCHAR(256) CHARACTER SET UNICODE_FSS, ISUSERANONYMOUS SMALLINT, CURRENTTIMEUTC TIMESTAMP) RETURNS ( ERRORCODE INTEGER) AS declare variable userid char(36) character set octets; begin userid = null; errorcode = 0; userid = null; select pkid from users where applicationname = :applicationname and username = :username into :userid; if (userid is null) then userid = :username; if (userid is not null) then begin IF (EXISTS( SELECT * FROM Profiles WHERE profiles.pkid = :UserId)) then UPDATE Profiles SET PropertyNames=:PropertyNames, PropertyValuesString = :PropertyValuesString, PropertyValuesBinary = :PropertyValuesBinary, LastUpdatedDate=:CurrentTimeUtc , LastActivityDate=:currenttimeutc WHERE pkid = :UserId; ELSE INSERT INTO Profiles(pkid, PropertyNames, PropertyValuesString, PropertyValuesBinary, LastUpdatedDate,ISUSERANONYMOUS,APPLICATIONNAME,LastActivityDate) VALUES (:UserId, :PropertyNames, :PropertyValuesString, :PropertyValuesBinary, :CurrentTimeUtc,:isuseranonymous,:applicationname,:CurrentTimeUtc); end else errorcode = 1; suspend; end^ SET TERM ; ^ GRANT SELECT,DELETE ON PROFILES TO PROCEDURE PROFILES_DELETEINACTPROFILES; GRANT EXECUTE ON PROCEDURE PROFILES_DELETEINACTPROFILES TO SYSDBA; GRANT SELECT ON USERS TO PROCEDURE PROFILES_DELETEPROFILE; GRANT SELECT,DELETE ON PROFILES TO PROCEDURE PROFILES_DELETEPROFILE; GRANT EXECUTE ON PROCEDURE PROFILES_DELETEPROFILE TO SYSDBA; GRANT SELECT ON PROFILES TO PROCEDURE PROFILES_GETNBOFINACTPROFILES; GRANT EXECUTE ON PROCEDURE PROFILES_GETNBOFINACTPROFILES TO SYSDBA; GRANT SELECT ON PROFILES TO PROCEDURE PROFILES_GETPROFILES; GRANT SELECT ON USERS TO PROCEDURE PROFILES_GETPROFILES; GRANT EXECUTE ON PROCEDURE PROFILES_GETPROFILES TO SYSDBA; GRANT SELECT ON USERS TO PROCEDURE PROFILES_GETPROPERTIES; GRANT SELECT,UPDATE ON PROFILES TO PROCEDURE PROFILES_GETPROPERTIES; GRANT EXECUTE ON PROCEDURE PROFILES_GETPROPERTIES TO SYSDBA; GRANT SELECT ON USERS TO PROCEDURE PROFILES_SETPROPERTIES; GRANT SELECT,INSERT,UPDATE ON PROFILES TO PROCEDURE PROFILES_SETPROPERTIES; GRANT EXECUTE ON PROCEDURE PROFILES_SETPROPERTIES TO SYSDBA;
Size kolay olmayacak demiştim...
F9 ile Run komutu sonrasında C:\AspNetSecurityTest.fdb yolunda yeni bir Firebird Database edinmiş oldunuz.Şimdi Yine IBEXPERT ile oluşan Firebird veritabanına bir bakalım.
IBEXPERT ile bu Firebird veritabanını Registry ederek içerisini bir kontrol etmemiz gerekli çünkü database için yapacağımız bazı şeyler var...
Evet Tables-Stored Procedures ve Trigers yapıları tamamlanmış fakat eksiklikler var Ms Sql Membership ile Asp.Net web uygulamanızda kullanmışsanız bu elementlerin daha çok olduğunu bilirsiniz.Veritabanımıza tekrar geri döneceğiz onu bu haliyle bırakalım ve Visual Studio ile yeni bir Asp.Net web projemizioluşturalım. Burada bazı önemli detayları atlamadan uygulamanız gerekiyor....
Visual Studio Asp.Net Firebird MemberShip Security Project
Yazının başında bahsettiğim FirebirdSql.dll dosyalarının Bin klasörü içerisinde olduklarını sanırım görebiliyorsunuz.Bunları ayrıca Visual Studio Property Pages içerisinden kontrol ederek References(referanslar) kısmında olup olmadıklarına bakmamız gerekir.Bazen bu konuda Visual Studio görmezden gelebiliyor.Eğer böyle bir şey olursa Browse edip bu dll leri görmesini sağlamamız gerekecektir.Şimdi Visual Studio ile Asp.net web uygulamamızın web.config dosyasını yazıcaz zaten en önemli kısımda budur.Nedense Firebird kullanmaya çalışan herkes connection string kısmında sıkıntı yaşar, veritabanına bağlanamaz ve Firebird kullanmaktan vazgeçer.Bu yüzden bunu biraz daha detaylı anlatacağım.
Asp.Net Firebird Membership Security Web.config - Firebird Connection String
Bu bağlantı dizesi her Firebird kullanımında işe yarayacaktır.Fakat Firebird ODBC yada OLEDB olduğunda işlem değişir.Bununla ilgili bilgileri daha önceki bloglarımda vermiştim...Bu satıra bakıp birazda işten anlayanlar olurmu hoca Database Path nereyi gösteriyor sen nereye connection string yazdın dicekler.Evet o halde C:\AspNetFirebirdSecurity.fdb veritabanı dosyanızı alın ve connection string'te yazan yere götürün...Buda Visual Studio içerisinde işlemlere devam edeyoruz demek okuyor.Hala web.config için yazmaya ve artık authentication- rolemanager ve profile kısımlarınıda tamamlamamız gerekli ben buraya tüm web.config içeriğinin kodlarını(connection string dahil) yapıştırıyorum sizde aynen bu şekilde yaparsınız.
Blog aldı başını gidiyor...Olabildiğince çok kod yazdık.Aslında amaçta budur zira ben bunun tümünü zipleyip buraya bir indirme linki koyabilirdim fakat bu işi yeni öğrenmeyi isteyenler için pek çekici gelmezdi bu durum ve çoğu zamanda kullanılmazdı.Ama bu sayede adım adım geliştirerek uygulama yaparak tecrübe etmek her zaman tercih edilmelidir.Elbette bana göre.Evet dilerseniz blogta sizde fazla karışmadan bu blogu burada sonlandıralım ve diğer blogtada bu işi yani Asp.Net Firebird Membership Security geliştirmesini tamamlamaya çalışalım.Bu konu söylediğim gibi bir seri haline gelebilecek bir konudur bu yüzdende tadını çıkaralım.Son olarak siz neler yaptığımızı dilerseniz baştan gözden geçiriniz Bir sonraki blogta eksik kalan veritabanı elementlerini yapacağız."Asp.Net Web Site Administration Tool" içinde bazı önemli ayarları tamamlayacağız...Ama ben size şimdiden Securty ve Provider ile ilgili ilk resmi buraya iliştireyim...
Membership i AccessDB'de kullanma imkanımız var mıdır ?
YanıtlaSilEvet var. Bunu çok önce yazıp anlatmıştım. Refink: http://sistemdestekuzmani.blogspot.com.tr/2012/05/aspnet-web-ms-access-membership.html
YanıtlaSil