/// <summary> /// 查询用户及用户拥有的权限集合 /// </summary> /// <returns></returns> private static UserModel FindUserAndPermissions() { lock (_lock) { //var userService = _container.Resolve<IJmpLocuserService>(); var userProvider = UserProviderDictionary.GetUserProvider(ClaimsClient.Trim().ToLower()); var userModel = userProvider.FindByLoginName(UserName, ClaimsClient); var isSuperAdmin = userModel.Type == (int)UserType.SuperAdministrator && userModel.Id > 0; var rbacService = DependencyResolver.Current.GetService <IRbacService>(); var permissions = rbacService.FindPermissions(userModel.Id, isSuperAdmin); userModel.Permissions = permissions.Select(x => new PermissionModel { ActionCode = x.ActionCode, ActionName = x.ActionName, ModuleCode = x.ModuleCode, ModuleName = x.ModuleName, PlatformId = x.ClientId, RequestUrl = x.RequestUrl, IsButton = x.IsButton, ButtonType = x.ButtonType, JsOperatingFunction = x.JsOperatingFunction, ButtonIcon = x.ButtonIcon }).ToList(); return(userModel); } }
private T GetAuthenticatedServiceMethodResult <T>(Func <ClaimsClient, T> serviceMethodInvoker) { ClaimsClient client = null; try { if (this.UseDeclarativeBindingConfiguration) { client = new ClaimsClient(); } else { client = new ClaimsClient(this.Binding, this.EndpointAddress); } client.Endpoint.Contract = ContractDescription.GetContract(typeof(IClaims)); using (OperationContextScope scope = new OperationContextScope(client.InnerChannel)) { OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = this.GetOAuthHeader(client.Endpoint.Address.Uri, true); return(serviceMethodInvoker(client)); } } finally { client.Close(); } }