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 :
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"]);
    }
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

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