Frage

Ich bin mit so etwas wie dies auf meinem server:

TcpServerChannel channel = new TcpServerChannel(settings.RemotingPort);
ChannelServices.RegisterChannel(channel, true);
RemotingServices.Marshal(myRemoteObject, "myRemoteObject");

Ich würde gerne abonnieren, um irgendeine Art von Veranstaltung so, dass wenn ein remote-client eine Verbindung zu myRemoteObject, kann ich überprüfen Sie die Gewinde.CurrentPrincipal.Identität.Namen, um zu entscheiden, ob zu ermächtigen ihn.

Zurzeit mache ich den entsprechenden Prüfung in jedem ausgesetzt remote-Methode myRemoteObject was ist ein unordentlicher...

War es hilfreich?

Lösung

In meinem remoting-Anwendung, die ich definiert ein spezielles Objekt/Schnittstelle, wo Kunden müssen zuerst autorisieren.Das Besondere Objekt kehrt dann zurück, wenn der client autorisiert wurde, das remote-Objekt.So haben Sie die Berechtigung, an einer Stelle.

Es sieht so etwas wie dieses.

public interface IPortal
{
  object SignIn(string name, string password);
}

public class Portal : MarshalByRefObject, IPortal
{
  private object _remoteObject;

  public Portal() {
    _remoteObject = new RemoteObject();
  }

  public object SignIn(string name, string password) 
  {
    // Authorization
    // return your remote object

    return _remoteObject;
  }
}

In Ihrer Anwendung zu hosten Portal-Objekt

TcpServerChannel channel = new TcpServerChannel(settings.RemotingPort);
ChannelServices.RegisterChannel(channel, true);
Portal portal = new Portal()
RemotingServices.Marshal(portal , "portal");

Andere Tipps

Sie könnte so etwas wie verwenden Postsharp von jeder Methode, um die Kontrolle ausklammern - tun Sie es einfach in die AOP Beratung. (Sie dies auf die Klasse, die ihre Methoden aussetzt, nicht auf die Client-Verbindung.)

Dieser Ansatz ist unabhängig von was auch immer Transport Sie für Remote verwenden -. Es Faktoren aus nur das Querschnittsthema der Zulassung für alle Methoden in Ihrer Klasse auslagern

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top