SecurityCallContext クラス
アセンブリ: System.EnterpriseServices (system.enterpriseservices.dll 内)


SecurityCallContext クラスを使用して、ServicedComponent クラスのメソッドの呼び出しのセキュリティ コンテキストを調査する方法のコード例を次に示します。
' Accept a constructor string. <ConstructionEnabled()> _ Public Class EmployeeInformation Inherits ServicedComponent ' The employee's user name and salary. Private accountName As String Private salary As Double = 0 ' Get the employee's name. All users can call this method. Public Function GetName() As String Return accountName End Function 'GetName ' Set the employee's salary. Only managers can do this. Public Sub SetSalary(ByVal ammount As Double) If SecurityCallContext.CurrentCall.IsCallerInRole("Manager") Then salary = ammount Else Throw New UnauthorizedAccessException() End If End Sub 'SetSalary ' Get the employee's salary. Only the employee and managers can do this. Public Function GetSalary() As Double If SecurityCallContext.CurrentCall.DirectCaller.AccountName = accountName OrElse SecurityCallContext.CurrentCall.IsCallerInRole("Manager") Then Return salary Else Throw New UnauthorizedAccessException() End If End Function 'GetSalary ' Use the constructor string. ' This method is called when the object is instantiated. Protected Overrides Sub Construct(ByVal constructorString As String) accountName = constructorString End Sub 'Construct End Class 'EmployeeInformation
// Accept a constructor string. [ConstructionEnabled] public class EmployeeInformation : ServicedComponent { // The employee's user name and salary. private string accountName; private double salary = 0; // Get the employee's name. All users can call this method. public string GetName () { return(accountName); } // Set the employee's salary. Only managers can do this. public void SetSalary (double ammount) { if (SecurityCallContext.CurrentCall.IsCallerInRole("Manager")) { salary = ammount; } else { throw new UnauthorizedAccessException(); } } // Get the employee's salary. Only the employee and managers can do this. public double GetSalary () { if ( SecurityCallContext.CurrentCall.DirectCaller.AccountName == accountName || SecurityCallContext.CurrentCall.IsCallerInRole("Manager") ) { return(salary); } else { throw new UnauthorizedAccessException(); } } // Use the constructor string. // This method is called when the object is instantiated. protected override void Construct (string constructorString) { accountName = constructorString; } }
// Accept a constructor string. [ConstructionEnabled] public ref class EmployeeInformation: public ServicedComponent { private: // The employee's user name and salary. String^ accountName; double salary; public: // Get the employee's name. All users can call this method. String^ GetName() { return (accountName); } // Set the employee's salary. Only managers can do this. void SetSalary( double ammount ) { if ( SecurityCallContext::CurrentCall->IsCallerInRole( "Manager" ) ) { salary = ammount; } else { throw gcnew UnauthorizedAccessException; } } // Get the employee's salary. Only the employee and managers can do this. double GetSalary() { if ( SecurityCallContext::CurrentCall->DirectCaller->AccountName == accountName || SecurityCallContext::CurrentCall->IsCallerInRole( "Manager" ) ) { return (salary); } else { throw gcnew UnauthorizedAccessException; } } protected: // Use the constructor string. // This method is called when the object is instantiated. virtual void Construct( String^ constructorString ) override { accountName = constructorString; } };
// Accept a constructor string. /** @attribute ConstructionEnabled() */ public class EmployeeInformation extends ServicedComponent { // The employee's user name and salary. private String accountName; private double salary = 0; // Get the employee's name. All users can call this method. public String GetName() { return accountName; } //GetName // Set the employee's salary. Only managers can do this. public void SetSalary(double ammount) throws System.UnauthorizedAccessException { if (SecurityCallContext.get_CurrentCall().IsCallerInRole("Manager")) { salary = ammount; } else { throw new UnauthorizedAccessException(); } } //SetSalary // Get the employee's salary. Only the employee and managers can do this. public double GetSalary() throws System.UnauthorizedAccessException { if (SecurityCallContext.get_CurrentCall().get_DirectCaller(). get_AccountName().Equals(accountName) || SecurityCallContext.get_CurrentCall(). IsCallerInRole("Manager")) { return salary; } else { throw new UnauthorizedAccessException(); } } //GetSalary // Use the constructor string. // This method is called when the object is instantiated. protected void Construct(String constructorString) { accountName = constructorString; } //Construct } //EmployeeInformation

System.EnterpriseServices.SecurityCallContext


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- SecurityCallContext クラスのページへのリンク