un nouveau tutoriel pour une question qui est très demandée:
Comment gérer la sécurité XMLRAD à partir de la base de données ?
http://xmlrad.developpez.com/Articles/Authentification/
un nouveau tutoriel pour une question qui est très demandée:
Comment gérer la sécurité XMLRAD à partir de la base de données ?
http://xmlrad.developpez.com/Articles/Authentification/
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
Bonsoir,
Merci pour votre excellent article : il m'a servi de base de départ pour un monde que je connaissais pas.
J'ai buté ensuite sur les pivots qui ne fonctionnaient plus avec ce système en place.
Je pense en avoir trouvé la raison : XMLCollection.DBForEach altère le contenu de XMLC_Pivot. Dans la procédure onAuthenticate il suffit au début de le sauvegarder, et de le restaurer dans le finally, et tout rentre dans l'ordre.
Georges
Merci pour le tip ;-) je viens de tomber exactement sur ce souci...Envoyé par Georges_Lauret
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web
Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Pourquoi ne pas mettre un exemple du code.
Cela peut servir à tout le monde...![]()
Alain
______________________________
Delphi7+XmlRAD2005+WS2003+IIS
Oui, désolé...Envoyé par powerlog
![]()
Je reprends l'exemple (OnAuthenticate) du code Delphi dans le tuto de RDM, en vert les modifs :
Probablement que dans les prochaines releases >2006, ce sera fixé par l'éditeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 procedure TTrainingAdm.XMLCollectionEvents1Authenticate(XMLCollection: IXMLCollection; e: TAuthenticateEventArgs); var Database: IDacDatabase; Session: WideString; USR_NAME: WideString; Expiration: TDateTime; SavePivot: WideString; begin SavePivot := Context.GetValue('XMLC_Pivot'); if CompareText(XMLApplication.InitParams.Values['XMLC_SecurityLevel'], 'GUEST') = 0 then begin Context.SetValue('XMLC_Authenticated', '1'); Exit; end; Database := XMLCollection.GetDatabase('Database'); if Database = nil then XMLRequest.RaiseError('Cannot find database', 'TTrainingWM.XMLCollectionEvents1Authenticate'); if not Database.GetConnected then Database.Open; Database.StartTransaction; try try e.Handled := True; USR_NAME := Context.GetValue('XMLC_UserName'); Session := Context.GetValue('XMLC_Session'); Context.SetValue('USR_NAME', USR_NAME); Context.SetValue('USR_SESSION', Session); XMLCollection.DBExtract('qryUSRSession'); if Context.GetValue('USR_ID') = '' then begin Context.SetValue('XMLC_Authenticated', '0'); XMLRequest.RaiseError('XMLC_AUTHENTICATION_REQUIRED', 'TTrainingWM.XMLCollectionEvents1Authenticate'); end; Expiration := StrToFloatDef(Context.GetValue('USR_EXPIRATION'), 0); if Expiration < Now then begin Context.SetValue('XMLC_Authenticated', '0'); XMLRequest.RaiseError('XMLC_AUTHENTICATION_REQUIRED', 'TTrainingWM.XMLCollectionEvents1Authenticate'); end; Context.SetValue('XMLC_Authenticated', '1'); // mettre ici le code de gestion des groupes et autorisations (cf Personnaliser l'autorisation) except Database.Rollback; raise; end; finally Context.SetValue('XMLC_Pivot', SavePivot); Database.Commit; end; end;
Sylvain
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web
Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager