-
I'm from Chongqing and now I'm working in Zhejiang.
-
I love motorcycles.
-
The language I use most is C#.
colinin / abp-next-admin Goto Github PK
View Code? Open in Web Editor NEW这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
License: MIT License
这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
License: MIT License
As backend services grow more and more functional, the current backend admin project is too bloated and deviated from what was originally assigned.
In the future, backend-admin project will be further broken up to separate Identity-api、Identity-server-api、Setting-management-api、Tenant-management-api、 Frature-management-api
通过Abp的/api/abp/api-definition接口可以拿到Abp控制器和Dto 这样应该就可以生成服务代理了
ant-design框架社区影响力比较大,几乎已经成为国内UI标准了。考虑项目推广使用的话建议开发antd版本。
https://github.com/ant-design/ant-design (react版本)
https://github.com/ant-design/ant-design-pro (react版本)
https://github.com/vueComponent/ant-design-vue (vue版本)
https://github.com/NG-ZORRO/ng-zorro-antd (angular版本)
https://github.com/ant-design-blazor/ant-design-blazor (blazor版本)
...
blazor + grpc + abp 强无敌。预计到abp 3.0开始支持grpc了。
UIs for languages that are read from right-to-left (RTL), such as Arabic and Hebrew, should be mirrored to ensure content is easy to understand.
Mirroring layout
The main difference between left-to-right (LTR) and right-to-left (RTL) language scripts is the direction in which content is displayed:
LTR languages display content from left to right
RTL languages display content from right to left
RTL content also affects the direction in which some icons and images are displayed, particularly those depicting a sequence of events.
In general, the passage of time is depicted as left to right for LTR languages, and right to left for RTL languages.
Among the issues: #34: How to start to debug with backend application,
As suggested, I left the initialization of the gateway to the data seed, but this was followed by the non-negligible problem of deleting the original gateway data structure and data each time the gateway was started.
If want to check for changes and only write preset data, this is a lot of work, so In the current version I have not considered,
so: please back up your own gateway management database!
目前是用过配置Options来启用阿里云的API,无法做到运行时动态改变配置,考虑使用设置管理模块?
阿里云API属于底层模块,理论上来说是不会随时改变的
如淘宝订单号这些 生成时都有一定的规则并有一定的意义 我们是否可以做一个可配置的编号生成模块
hello, @colinin can you help to figure out this issue?
i need to send an message and get noticed in the above pages.
sincerely thanks~
我已经改了appsetting里的数据库连接地址,但是启动仍会报错
MySqlConnector.MySqlException (0x80004005): Access denied for user 'colin'@'192.168.0.37' (using password: YES)
at MySqlConnector.Core.ServerSession.SwitchAuthenticationAsync(ConnectionSettings cs, PayloadData payload, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/ServerSession.cs:line 577
at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, Int32 startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/ServerSession.cs:line 467
at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/ConnectionPool.cs:line 110
at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/ConnectionPool.cs:line 140
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Nullable1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 846 at MySqlConnector.MySqlConnection.OpenAsync(Nullable
1 ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/MySqlConnection.cs:line 410
at MySqlConnector.MySqlConnection.Open() in //src/MySqlConnector/MySqlConnection.cs:line 376
at DotNetCore.CAP.MySql.DbConnectionExtensions.ExecuteNonQuery(IDbConnection connection, String sql, IDbTransaction transaction, Object[] sqlParams)
at DotNetCore.CAP.MySql.MySqlStorageInitializer.InitializeAsync(CancellationToken cancellationToken)
at DotNetCore.CAP.MySql.MySqlStorageInitializer.InitializeAsync(CancellationToken cancellationToken)
at DotNetCore.CAP.Internal.Bootstrapper.BootstrapAsync(CancellationToken stoppingToken)
\aspnet-core\modules\apigateway\LINGYUN.ApiGateWay.Admin.Domain.Shared\LINGYUN\ApiGateWay\Admin\Localization\DomainShared
我看了商业版的功能你都有了,如果有单体的能快速写业务的框架就牛逼了,我想写,但是我不会啊,写不出来
Hi, can you write documents on how to start the frontend application with more-detail?
for example:
1:the suitable vue-cli version?
2:the yarn install dependancy? which is the suitable directory to run it?
for me, i got the following error and yarn failed
E:\abp-vue-admin-element-typescript\vueJs>yarn install
yarn install v1.19.1
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] Resolving packages...
warning @microsoft/signalr > [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
warning @microsoft/signalr > request > [email protected]: this
warning element-ui > async-validator > babel-runtime > [email protected]: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
warning jsonlint > [email protected]: Package no longer supported. Contact [email protected] for more info.
error An unexpected error occurred: "https://github.com/seonim-ryu/Squire: connect ETIMEDOUT 192.30.253.112:443".
info If you think this is a bug, please open a bug report with the information provided in "E:\\abp-vue-admin-element-typescript\\vueJs\\yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
3:how to distinguish the vuejs and vuejsempty?
in fact , i couldnot run the following cmd success, only in vuejsempty folder i can yarn install , but i couldnot start the vue project to see the front-end . where should i input the right configuration.
cd vueJs
start-vue-admin.bat
4: how to fill the follow default address according to the services in the source project:
VUE_APP_BASE_API = '你的api网关服务器地址'
VUE_APP_BASE_IDENTITY_SERVICE = '你的identityService服务器地址'
VUE_APP_BASE_IDENTITY_SERVER = '你的identityServer服务器地址'
QQ或者微信或者邮箱都可以
当前权限管理太过于集中,框架依赖于IPermissionDefinitionProvider,如果要管理权限,则Admin模块必须依赖于权限配置模块,如果权限越来越多,很难有效的管理(查询权限也会越来越慢)
解决要点:
1、创建一个基础模块,定义接口IPermissionRegisterContributer,该接口在应用启动时通过扫描IPermissionDefinitionProvider来向权限中心注册项目权限;
2、IPermissionRegisterContributer的实现可以是分布式事件的发布者,权限中心通过订阅此事件向自身的IPermissionDefinitionProvider接口注入对应的权限,而后续所有的权限管理都通过权限中心来实现,解耦具体的业务权限与管理模块
3、待续,应该还有更好的思路;而且SettingManagement、FeatureManagement等都可以采用这种思路
对这个开源项目很感兴趣,看着后台框架都是放的模块,后端程序没有sln如何正确进行调试
使用的docker的启动方式
其他服务启动正常
但是 apigateway-host-service 无法启动:Authorization failed! Given policy has not granted.
其中 apigateway-admin-service的Debug.log文件中可以看到如下
at Microsoft.AspNetCore.Authorization.AbpAuthorizationServiceExtensions.CheckAsync(IAuthorizationService authorizationService, AuthorizationPolicy policy)
at Volo.Abp.Authorization.MethodInvocationAuthorizationService.CheckAsync(MethodInvocationAuthorizationContext context)
at Volo.Abp.Authorization.AuthorizationInterceptor.AuthorizeAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Authorization.AuthorizationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at LINGYUN.ApiGateway.Ocelot.GlobalConfigurationController.GetAsync(GlobalGetByAppIdInputDto input)
at lambda_method(Closure , Object )
at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
我检查了redis中的token
这个域名已经做过host可以正常访问的
platform.abppermissiongrants表中数据如下
对比过 #136 的方法 还是没有进展 apigateway-host-service 无法启动 无法启动……
我前端发布在阿里云上,使用的是Nginx。然后我第一次访问时,加载至少要三四十秒,请问是什么问题
我用开发环境运行没有问题,但是发布出来就说Authorization failed! Given policy has not granted
错误 CS0006 未能找到元数据文件“D:\LocalNuget\netstandard2.0\LINGYUN.Abp.IM.dll”
使用yarn install安装后,再执行start-vue-admin.bat
结果报错。
Webpack: Starting ... [1] [1] √ Compile modules [1] √ Build modules [1] √ Optimize modules [1] > Emit files [1] ERROR Failed to compile with 1 errors下午10:31:47 [1] Webpack: Starting ... [1] [1] √ Compile modules [1] √ Build modules [1] √ Optimize modules [1] √ Emit files [1] [1] Webpack: Finished after 25.016 seconds. [1] [1] ERROR in E:/source/net/abp/abp-vue-admin-element-typescript/vueJs/node_modules/vuedraggable/src/vuedraggable.d.ts(8,5): [1] 8:5 Property 'element' in type 'Draggable' is not assignable to the same property in base type 'object & Record<never, any> & Vue'. [1] Type 'string' is not assignable to type 'Element | null'. [1] 6 | noTransitionOnDrag: boolean; [1] 7 | [1] > 8 | element: string; [1] | ^ [1] 9 | [1] 10 | tag: string; [1] 11 | [1] ERROR in E:/source/net/abp/abp-vue-admin-element-typescript/vueJs/src/components/DraggableKanban/index.vue(26,2): [1] 26:2 No overload matches this call. [1] Overload 1 of 2, '(options: ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<...>> & ThisType<...>): <VC extends VueClass<...>>(target: VC) => VC', gave the following error. [1] Type 'typeof Draggable' is not assignable to type 'VueConstructor<Vue> | FunctionalComponentOptions<any, PropsDefinition<any>> | ComponentOptions<never, any, any, any, any, Record<...>> | AsyncComponentPromise<...> | AsyncComponentFactory<...>'. [1] Type 'typeof Draggable' is not assignable to type 'VueConstructor<Vue>'. [1] Types of parameters 'options' and 'options' are incompatible. [1] Type 'ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<...>> | undefined' is not assignable to type 'ThisTypedComponentOptionsWithArrayProps<Vue, object, object, object, never> | undefined'. [1] Type 'ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<...>>' is not assignable to type 'ThisTypedComponentOptionsWithArrayProps<Vue, object, object, object, never>'. [1] Type 'ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<...>>' is not assignable to type 'ComponentOptions<Vue, DataDef<object, Record<never, any>, Vue>, object, object, never[], Record<never, any>>'. [1] Types of property 'props' are incompatible. [1] Type 'ArrayPropsDefinition<Record<string, any>> | RecordPropsDefinition<Record<string, any>> | undefined' is not assignable to type 'never[] | undefined'. [1] Type 'ArrayPropsDefinition<Record<string, any>>' is not assignable to type 'never[]'. [1] Overload 2 of 2, '(target: VueClass<Vue>): VueClass<Vue>', gave the following error. [1] Argument of type '{ name: string; components: { Draggable: typeof Draggable; }; }' is not assignable to parameter of type 'VueClass<Vue>'. [1] Object literal may only specify known properties, and 'name' does not exist in type 'VueClass<Vue>'. [1] 24 | import { Component, Prop, Vue } from 'vue-property-decorator' [1] 25 | [1] > 26 | @Component({ [1] | ^ [1] 27 | name: 'DraggableKanban', [1] 28 | components: { [1] 29 | Draggable [1] ERROR in E:/source/net/abp/abp-vue-admin-element-typescript/vueJs/src/components/DraggableList/index.vue(67,2):
东西是个好东西,就是不会用,哈哈
我有一个问题,整个架构是否没有设计续租问题,一个活跃用户在使用期间,假设token有效期过了,应该是自动续租,我发现现在貌似是设置一个长期有效的token来解决这个问题
我看到代码里面有多租户,但是运行是数据没有隔离是因为没启用多租户吗
Based on dynamic application domain, modular task management module is realized
Integrating FreeSql solves some of the problems with Ef Core
目前在其他租户管理菜单会改变宿主或其他租户的用户角色菜单,这会产生不可预计的后果
当通过官方库查询权限时,直接采用的IPermissionGrantRepository来查询,而查询用户权限的时候,还需要查询用户角色组,因此带来了额外的性能开销,需要重写IPermissionManager来优化
还有通知模块 ,您说会更改实体 ,请问这功能会一起更新嘛
Hi, can you detail how to start the backend application?
例如,host可以模仿登录到对应的租户后台,或者租户管理员可以模仿登录到旗下的用户后台
[HMR] Waiting for update signal from WDS...
start signalr connection...
[2020-07-15T05:51:03.174Z] Information: Normalizing '/signalr-hubs/notifications' to 'http://localhost:9527/signalr-hubs/notifications'.
Failed to load resource: the server responded with a status of 404 (Not Found)
webpack-internal:///./node_modules/@microsoft/signalr/dist/esm/Utils.js:210 [2020-07-15T05:51:03.289Z] Error: Failed to complete negotiation with the server: Error: Not Found
webpack-internal:///./node_modules/@microsoft/signalr/dist/esm/Utils.js:210 [2020-07-15T05:51:03.291Z] Error: Failed to start the connection: Error: Not Found
webpack-internal:///./node_modules/@microsoft/signalr/dist/esm/Errors.js:29 Uncaught (in promise) Error: Not Found
at new HttpError (webpack-internal:///./node_modules/@microsoft/signalr/dist/esm/Errors.js:29)
at XMLHttpRequest.xhr.onload (webpack-internal:///./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js:75)
Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module LINGYUN.ApiGateway.ApiGatewayHostModule, LINGYUN.ApiGateway.Host, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: One or more errors occurred. (Remote service returns error! StatusCode = BadGateway). See the inner exception for details.
---> System.AggregateException: One or more errors occurred. (Remote service returns error! StatusCode = BadGateway)
---> Volo.Abp.AbpException: Remote service returns error! StatusCode = BadGateway
appsettings配置错了吗?
{ "ApiGateway": { "AppId": "TEST-APP"//这里是用于Ocelot主机去API服务器获取参数的标识,指定需要获取什么类型的网关配置 }, "Redis": { "Configuration": "myredis", "InstanceName": "LINGYUN.AbpApplication", "DefaultDatabase": 10 }, "RemoteServices": { "ApiGateway": { "BaseUrl": "http://api-gateway-service/", "IdentityClient": "ApigatewayHostClient" } } }
在新通知消费者中定义了发布通知的应用程序定义,但是在做本地应用对比时造成了消息永远无法被处理的问题
最近收到邮件提醒(催更啊小伙子...)问我是不是放弃这个项目,我想abp框架不停更我就不放弃,正式项目正在用某些模块,前端纯属个人学习Vue,所以很多地方大量重复编码,界面也不美观(css从入门到放弃)
项目不会停止,只是年底了,太太太太太忙了,昨天1点半打的下班卡。。。
等放假了,我就有充足的精力来维护这个项目,和处理问题了,如果现在发现问题,可以开个issue,或者联系我的邮箱,谢谢
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.