2009-07-01 8 views
1

Wenn ich Roles.GetRolesForUser ("Benutzername") ausführen, werden die Rollen korrekt zurückgegeben. Wenn ich jedoch einen Benutzer zu einer Rolle in AD hinzufüge, wird das Ergebnis erst angezeigt, wenn ich das Konto protokolliert habe Benutzer aus ihrem System, und lassen Sie sie wieder anmelden.Die Ergebnisse von Roles.GetRolesForUser() werden zwischengespeichert

Gibt es eine Möglichkeit, das System jedes Mal neu überprüfen?

Antwort

3

Wenn Sie den integrierten Rollenanbieter verwenden, gibt es eine Einstellung in der Datei web.config, um dies zu ändern: cacheRolesInCookie. Ich glaube, dass es standardmäßig stimmt.

Dies erfordert natürlich ein Datenbank-Lookup jedes Mal, wenn eine Rolle Lookup passiert (wenn Sie die db natürlich verwenden), so dass möglicherweise keine gute Idee ist. Ansonsten denke ich, dass Sie Ihren eigenen Provider schreiben müssen, was ziemlich einfach ist. Erstellen Sie einfach eine neue Klasse, die von RoleProvider erbt, und stellen Sie Ihre eigenen Implementierungen bereit. Sie könnten das Caching (oder nicht) in Ihrer Implementierung behandeln.

Wenn Sie die internen Funktionen der integrierten Rollenanbieter sehen möchten, laden Sie Reflector herunter. Es ist ein großartiges Werkzeug.

EDIT

Sorry, Ich las und bemerkt, dass Sie AD verwenden. Sie sollten also mit dieser Änderung an der Provider-Einrichtung in der web.config in Ordnung sein.

Verwandte Themen