Announcement

Collapse
No announcement yet.

Zugriffsberechtigungen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriffsberechtigungen

    Hallo,
    parallel zu meiner anderen Frage im Forum hier hätte ich noch eine weitere.
    Und zwar habe ich in der ASP-Anwendungsstruktur zwei Ordner. Einen für Public und einen für Private. Der Public-Ordner ist für alle sichtbar, der Private nur für ausgewählte User.
    Eine echte Userverwaltung möchte ich jedoch nicht, sondern der Zurgriff soll über die Anmeldung im Netzwerk erfolgen. Dementsprechend habe ich folgende web.config:
    Code:
    <configuration>
    	<location path="Private">
    		<system.web>
    			<authorization configSource="App_Data\Authorization.xml" />
    		</system.web>
    	</location>
    	<location path="Public">
    		<system.web>
    			<authorization>
    				<allow users="*"/>
    			</authorization>
    		</system.web>
    	</location>
    </configuration>
    Jetzt möchte ich eine einfache Seite haben, wo ich User löschen oder hinzufügen kann. Dabei habe ich folgende Probleme:
    1. Das kleinere ist, dass ich gerne aus der web.config nur die Nutzer des Pfads "Private" haben will, also "*" möchte ich nicht angezeigt bekommen.
    2. Das größere Problem ist das Löschen/Hinzufügen von Nutzern. Habe dazu folgenden Code:
    Code:
    private void addUser(string username)
    {
    Configuration config = WebConfigurationManager.OpenWebConfiguration("~/App_Data/Authorization.xml");
    
    AuthorizationSection section = (AuthorizationSection)WebConfigurationManager.GetSection("system.web/authorization");
    
    AuthorizationRule rule = new AuthorizationRule(AuthorizationRuleAction.Allow);
    
    rule.Users.Add(username);
                
    section.Rules.Add(rule);
    
    config.Save();
            }
    An sich klappt das auch, nur leider sagt er mir, dass die Datei read-only ist.
    Ist es möglich eine "Nutzerverwaltung" so zu realiseren?

    Danke schonmal!

  • #2
    Originally posted by Nayko View Post
    Der Public-Ordner ist für alle sichtbar, der Private nur für ausgewählte User.
    Dann brauchst du 2 Web.Config Dateien:

    eine Web.Config-Datei sollte dann in Public Ordner gespeichert werden
    und die andere in Private Ordner. (Mit dem entsprechenden Allow/Deny Syntax)

    Public: allow "*"

    Private: allow -> Role -> "ZugelasseneBenutzer"; deny "*"
    Zuletzt editiert von vadym voytas; 25.07.2011, 21:22.
    Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

    Comment


    • #3
      Originally posted by Nayko View Post
      Jetzt möchte ich eine einfache Seite haben, wo ich User löschen oder hinzufügen kann.
      WebConfig muss du nicht ändern:
      Code:
      Roles.AddUsersToRole("Nayko", "ZugelasseneBenutzer")
      MSDN:
      Exemplarische Vorgehensweise: Verwalten von Websitebenutzern mit Rollen
      Zuletzt editiert von vadym voytas; 25.07.2011, 22:35.
      Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

      Comment


      • #4
        Also:
        Das MSDN-Tutorial hatte ich bereits auch gefunden, aber leider bringt es mir nichts, da ich kein SQL-Server Express Edition installiert habe und stattdessen MS SQL Server 2005 verwenden müsste. Und so kompliziert sollte es halt nicht werden
        Deswegen wollte ich ja auf die Arbeit mit der web.config ausweichen. Wie du vielleicht gesehen hast, habe ich bereits versucht, die Nutzer für die Private-Struktur in eine XML auszulagern. Allerdings habe ich, wie bereits erwähnt, das Problem, dass ich die web.config wegen des read-only nicht speichern kann

        Comment


        • #5
          Note that the user or process that writes must have the following permissions:

          Write permission on the configuration file and directory at the current configuration hierarchy level.

          Read permissions on all the configuration files.
          Hast du Berechtigung geprüft?

          WebConfigurationManager Class

          Read-Only Eigenschaft kannst du ändern über MMC Console (Run cmd.exe inetmgr.exe , rechte Maustaste on dein Web-Projekt, Properties, Sicherheit-Reiter)
          Zuletzt editiert von vadym voytas; 26.07.2011, 21:10.
          Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

          Comment


          • #6
            Hallo!
            Also ich habe es jetzt wiefolgt hinbekommen:
            Wie du sagtest jedem Ordner eine eigene web.config geben. Dann hatte ich einen Fehler in meiner Methode addUser. Hier der funktionierende Code:
            Code:
            private void addUser(string username)
            {
            Configuration config = WebConfigurationManager.OpenWebConfiguration("~/Private");
            
            AuthorizationSection section = (AuthorizationSection)config.GetSection("system.web/authorization");
            
            AuthorizationRule rule = new AuthorizationRule(AuthorizationRuleAction.Allow);
            
            rule.Users.Add(username);
                        
            section.Rules.Add(rule);
            
            config.Save();
                    }

            Comment

            Working...
            X