static void Main() { #if EASYTEST DevExpress.ExpressApp.Win.EasyTest.EasyTestRemotingRegistration.Register(); #endif Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); EditModelPermission.AlwaysGranted = System.Diagnostics.Debugger.IsAttached; if (Tracing.GetFileLocationFromSettings() == DevExpress.Persistent.Base.FileLocation.CurrentUserApplicationDataFolder) { Tracing.LocalUserAppDataPath = Application.LocalUserAppDataPath; } Tracing.Initialize(); P3TEKWindowsFormsApplication winApplication = new P3TEKWindowsFormsApplication(); // Refer to the https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112680.aspx help article for more details on how to provide a custom splash form. //winApplication.SplashScreen = new DevExpress.ExpressApp.Win.Utils.DXSplashScreen("YourSplashImage.png"); SecurityAdapterHelper.Enable(); try { string connectionString = "net.tcp://127.0.0.1:1451/DataServer"; WcfSecuredClient wcfSecuredClient = new WcfSecuredClient(WcfDataServerHelper.CreateNetTcpBinding(), new EndpointAddress(connectionString)); MiddleTierClientSecurity security = new MiddleTierClientSecurity(wcfSecuredClient); security.IsSupportChangePassword = true; winApplication.Security = security; winApplication.CreateCustomObjectSpaceProvider += (s, e) => { e.ObjectSpaceProviders.Add(new MiddleTierServerObjectSpaceProvider(wcfSecuredClient)); e.ObjectSpaceProviders.Add(new NonPersistentObjectSpaceProvider(winApplication.TypesInfo, null)); }; winApplication.Setup(); winApplication.Start(); wcfSecuredClient.Dispose(); } catch (Exception e) { winApplication.HandleException(e); } }
protected void Session_Start(Object sender, EventArgs e) { WebApplication.SetInstance(Session, new PermissionPolicyExampleAspNetApplication()); string connectionString = "net.tcp://127.0.0.1:1451/DataServer"; WcfSecuredDataServerClient clientDataServer = new WcfSecuredDataServerClient( WcfDataServerHelper.CreateDefaultBinding(), new EndpointAddress(connectionString)); Session["DataServerClient"] = clientDataServer; WcfSecuredClient wcfSecuredClient = new WcfSecuredClient(WcfDataServerHelper.CreateNetTcpBinding(), new EndpointAddress(connectionString)); MiddleTierClientSecurity security = new MiddleTierClientSecurity(wcfSecuredClient); security.IsSupportChangePassword = true; WebApplication.Instance.ApplicationName = "PermissionPolicyExample"; WebApplication.Instance.Security = security; WebApplication.Instance.DatabaseUpdateMode = DatabaseUpdateMode.Never; WebApplication.Instance.CreateCustomObjectSpaceProvider += delegate(object sender2, CreateCustomObjectSpaceProviderEventArgs e2) { e2.ObjectSpaceProvider = new MiddleTierServerObjectSpaceProvider(wcfSecuredClient); }; WebApplication.Instance.Setup(); WebApplication.Instance.Start(); }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); EditModelPermission.AlwaysGranted = System.Diagnostics.Debugger.IsAttached; SecuredExportExampleWindowsFormsApplication winApplication = new SecuredExportExampleWindowsFormsApplication(); #if EASYTEST DevExpress.ExpressApp.Win.EasyTest.EasyTestRemotingRegistration.Register(); var serverProcess = new System.Diagnostics.Process(); serverProcess.StartInfo.FileName = @"..\..\..\SecuredExportExample.MiddleTierSecurityServer\bin\EasyTest\SecuredExportExample.MiddleTierSecurityServer.exe"; serverProcess.Start(); System.Threading.Thread.Sleep(5000); #endif try { WcfDataServerHelper.AddKnownType(typeof(ExportPermissionRequest)); winApplication.ConnectionString = "net.tcp://127.0.0.1:1451/DataServer"; winApplication.DatabaseUpdateMode = DatabaseUpdateMode.Never; WcfSecuredClient wcfSecuredClient = new WcfSecuredClient(WcfDataServerHelper.CreateNetTcpBinding(), new EndpointAddress(winApplication.ConnectionString)); MiddleTierClientSecurity securityClient = new MiddleTierClientSecurity(wcfSecuredClient); securityClient.IsSupportChangePassword = true; winApplication.ApplicationName = "SecuredExportExample"; winApplication.Security = securityClient; winApplication.CreateCustomObjectSpaceProvider += (s, e) => { e.ObjectSpaceProvider = new MiddleTierServerObjectSpaceProvider(wcfSecuredClient); }; winApplication.Setup(); winApplication.Start(); wcfSecuredClient.Dispose(); } catch (Exception e) { winApplication.HandleException(e); } }
static void AccessEmployee(WcfSecuredClient wcfSecuredClient) { try { XPDictionary dictionary = new ReflectionDictionary(); dictionary.CollectClassInfos(Assembly.GetAssembly(typeof(Employee))); bool isReadGranted = wcfSecuredClient.IsGranted(new SerializablePermissionRequest(typeof(Employee), null, null, SecurityOperations.Read)); Console.WriteLine(string.Format("Is read granted for Employee: {0}", isReadGranted)); bool isWriteGranted = wcfSecuredClient.IsGranted(new SerializablePermissionRequest(typeof(Employee), null, null, SecurityOperations.Write)); Console.WriteLine(string.Format("Is modification granted for Employee: {0}", isWriteGranted)); MiddleTierSerializableObjectLayerClient securedObjectLayerClient = new MiddleTierSerializableObjectLayerClient(wcfSecuredClient); SerializableObjectLayerClient objectLayerClient = new SerializableObjectLayerClient(securedObjectLayerClient, dictionary); UnitOfWork uow = new UnitOfWork(objectLayerClient); Console.WriteLine("\nRead all available Employee objects:"); foreach (Employee obj in new XPCollection(uow, typeof(Employee))) { Console.WriteLine(obj.Name); } Console.WriteLine("\nTry to modify object: "); try { Employee employee = uow.FindObject <Employee>(new BinaryOperator("Name", "Peter")); Console.WriteLine("Object name: " + employee.Name); employee.Name += "_modified"; uow.CommitChanges(); Console.WriteLine("New object name: " + employee.Name); } catch (Exception e) { Console.WriteLine("Error occured: " + e.Message); } } catch (Exception e) { Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace); } Console.WriteLine(); }