Bonjour, priere de m'aider a reussir mon module de l'authentification :
j'ai crée 3 roles admin, service1, service 2
dans mon projet j'ai les dossier suivants :
Account (login, changer mot de passe) avec web config allow admin, service1, service 2
Administrateurs (register, utilisateurs) admin, service1, service 2
Service1(paage 1, 2) admin, service1,
Service2(page 3, page 4) admin, , service 2
Defaut et master page
webconfig <deny users="?" />
mais j'ai beacoup de probleme, ca ne marche pas comme je veux :
- quand j'affecte admin a un ustilisteurs ca ne marche pas, par contre je peux affecter les autres
- dans mon fichier login j'ai mis le code suivant :
cela veut dire si c'est le role admin ou service 1 qui sont connecté je les redirige vers default sinon si c'est service 2 c'est vers traitement
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
51
52
53
54
55
56 protected void Page_Load(object sender, EventArgs e) { string pageDestination = "Default.aspx"; string username = ((TextBox)this.LoginUser.FindControl("UserName")).Text; if (username != "") { System.Data.SqlClient.SqlDataReader oDBDataReader; String Query = "SELECT aspnet_Roles.RoleName FROM aspnet_Roles INNER JOIN aspnet_UsersInRoles ON aspnet_Roles.RoleId = aspnet_UsersInRoles.RoleId INNER JOIN " + "aspnet_Users ON aspnet_UsersInRoles.UserId = aspnet_Users.UserId WHERE aspnet_Users.UserName='" + username + "'"; connection.Open(); DataTable dt = new DataTable(); SqlCommand cmdDatabase = new SqlCommand(Query, connection); oDBDataReader = cmdDatabase.ExecuteReader(); dt.Load(oDBDataReader); string[] rolesThisUser = dt.AsEnumerable().Select(row => row.Field<string>("RoleName")).ToArray(); oDBDataReader.Close(); connection.Close(); List<String> roles = rolesThisUser.ToList(); if (roles.Contains("Admin")) { pageDestination = "~/Default.aspx"; } else if (roles.Contains("service1") && !roles.Contains("service2")) { pageDestination = "~/Default.aspx"; } else if (!roles.Contains("service1") && roles.Contains("service2")) { pageDestination = "~/service2/Traitement_dossier.aspx"; } else if (roles.Contains("service1") && roles.Contains("service2")) { pageDestination = "~/Default.aspx"; } else { pageDestination = "Login.aspx"; } } LoginUser.DestinationPageUrl = pageDestination + "?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]); }
mais ca ne marche pas et parfois ca me donne improssible d'acceder a la ressource et il imbrique les dossiers Administrateurs/Service2/page ???
*- comment puis je afficher une page dans laquelle je met un message comme quoi cet utilisateur ne peut pas acceder a cette page si ce dernier n'a pas les droits suffisants
Merci pour votre aide![]()
Partager