Exemple #1
0
 /// <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();
            }
        }