标签: abp

IdentityServer 4、如何添加自定义登录页面

我希望自定义 IdentityServer 4 并使用自定义页面进行登录/注册/丢失密码等......(仅供参考,我使用 Blazor,但它应该是相同的!)。

示例 通过示例,我现在使用以下代码:

Challenge(authProps, "oidc");

但它重定向到预定义的登录页面,我该如何更改?

资料 我搜索了一些资料,看到有些人用下面的

.UserInteraction.LoginUrl = "http://..../MyLoginPage";

我的问题是我使用 abp.io,他们提供了一个 IdentityServer,但我无法访问AddIdentityServer代码,它在某处被硬编码,我无法访问它 (AbpIdentityServerDomainModule.cs)!

所以,我正在寻找一种重新定义登录页面的方法!

asp.net-identity identityserver4 blazor abp

7
推荐指数
2
解决办法
7170
查看次数

如何在 abp 框架中播种 AppUser

我正在尝试使用 abp.framework(版本 3)为实体框架数据库播种和 AppUser。我知道如何使用 IdentityUserManager 播种 IdentityUser,但找不到任何有关如何播种扩展 abpUser (如 appUser)的实体的文档。我在播种时设置密码(用于演示数据目的)。

abp

7
推荐指数
1
解决办法
2567
查看次数

将值对象添加到 EF 实体 - 实体类型无法配置为拥有的,因为它已配置为非拥有的

我们收到以下错误,该错误似乎仅在将日期时间添加到值对象时才会发生。'实体类型'TimeWindow'无法配置为拥有的,因为它已被配置为非拥有的。如果您想覆盖以前的配置,请首先通过调用“忽略”从模型中删除实体类型。

值对象类:

public class TimeWindow : ValueObject
    {
        public DateTime? StartTime { get; set; }
        public DateTime? EndTime { get; set; }

        private TimeWindow()
        {
        }

        public TimeWindow(
            DateTime? startTime,
            DateTime? endTime)
        {
            StartTime = startTime;
            EndTime = endTime;
        }

        protected override IEnumerable<object> GetAtomicValues()
        {
            yield return StartTime;
            yield return EndTime;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在 OnModelCreating 内部,我们添加了 OwnsOne 关系:

builder.Entity<Manifest>(b =>
        {
            b.ToTable(DistributionConsts.DbTablePrefix + "Manifests", DistributionConsts.DbSchema);
            b.ConfigureByConvention();
            b.OwnsOne(b => b.TimeWindow);
        });
Run Code Online (Sandbox Code Playgroud)

我们将 TimeWindow 值对象添加到的实体:

public class Manifest : FullAuditedAggregateRoot<Guid>
    {
        protected …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-core asp.net-core abp

6
推荐指数
1
解决办法
6003
查看次数

开发人员使用哪种设计模式 Abp 框架 (abp.io)?

在我的公司,我们使用全新的 Abp 框架 ( abp.io )。由于它是一个新框架,因此缺少大量文档,因此我们必须搜索源代码。看了这么多代码,我意识到这是他们正在使用的一种模式,它总是出现Providers、ProvidersManagement、DefinitionProvider 等等。我想知道这个模式是否有名字或者它只是在那里使用的东西。我不相信这是第二种选择,但我不知道。

功能模块、设置模块、权限模块都是使用这种设计模式实现的模块。

谢谢你们!

.net c# asp.net aspnetboilerplate abp

5
推荐指数
1
解决办法
1300
查看次数

如何修复此 AbpException:无法在 ABP.IO 框架中找到捆绑包“LeptonXLite.Global”的捆绑文件“/libs/abp/core/abp.css”

环境

  • 2023 年 4 月,Windows 11、Visual Studio 22。
  • 网络核心7
  • ABP CLI 7.1.1
  • npm 8.17.8
  • 纱线3.5.0

脚步

  • abp new TodoApp,创建一个新的 ABP 解决方案。
  • 恢复包。
  • 运行TodoApp.DbMigrator项目,以创建完整的数据库。
  • 执行解决方案运行TodoApp.Web项目。
  • 抛出异常。

问题

  • 在.Web项目中,该/wwwroot/libs/文件夹是空的。
  • 抛出异常。

抛出异常

在此输入图像描述

原始异常详细信息:

Volo.Abp.AbpException: Could not find the bundle file '/libs/abp/core/abp.css' for the bundle 'LeptonXLite.Global'!
   at Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers.AbpTagHelperResourceService.ProcessAsync(ViewContext viewContext, TagHelper tagHelper, TagHelperContext context, TagHelperOutput output, List`1 bundleItems, String bundleName)
   at Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers.AbpBundleTagHelperService`2.ProcessAsync(TagHelperContext context, TagHelperOutput output)
   at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, Int32 i, Int32 count)
   at AspNetCoreGeneratedDocument.Themes_LeptonXLite_Layouts_Application.<>c__DisplayClass17_0.<<ExecuteAsync>b__0>d.MoveNext()
--- End …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-core abp

5
推荐指数
1
解决办法
2134
查看次数

使用nginx反向代理部署K8S时ABP框架HttpApi.Host失败

我已经将ABP框架部署在Kubernetes集群中。

存在以下部署:

  • 雷迪斯
  • MSSql
  • 认证服务器
  • HttpApi.Host
  • Nginx 入口/反向代理带有 https 终止,集群内没有加密。

因此,AuthServer、HttpApi.Host 正在侦听端口 80 / http,而 nginx 正在侦听 https。配置/Helm 值如下:

use-forwarded-headers: "true"
use-proxy-protocol: "true"
use-gzip: "true"
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,部署后我可以进入 Swagger 并授权: 在此输入图像描述

通过检查 AuthServer 日志可以确认这一点:

[19:12:39 INF] CORS policy execution successful.
[19:12:39 INF] The request URI matched a server endpoint: Token.
[19:12:39 INF] The token request was successfully extracted: {
  "grant_type": "authorization_code",
  "code": "[redacted]",
  "client_id": "foobar_Swagger",
  "redirect_uri": "https://api.staging.foobar.io/swagger/oauth2-redirect.html"
}.
[19:12:39 INF] The token request was successfully validated.
Run Code Online (Sandbox Code Playgroud)

但是,现在我想使用 Swagger 来确保与端点的连接正常工作,因此我尝试第一个 GET 端点: 在此输入图像描述

如您所见,有 500 …

kubernetes openiddict nginx-reverse-proxy abp

5
推荐指数
1
解决办法
260
查看次数

忘记密码 AspNetBoilerPlate 的正确实现

我使用 aspnetboilerplate (MVC) 并希望实现忘记密码功能,以允许用户使用登录屏幕上的链接重置自己的密码。

我想这是通过生成密码重置代码然后通过电子邮件发送给用户来工作的。用户点击链接并被带到允许他们重置密码的屏幕。

我停留在初始阶段。在注意到尝试登录时返回了用户对象后,我从登录操作的副本开始。从这里我尝试设置密码重置代码。

  [HttpPost]
        [UnitOfWork]
        public virtual async Task<JsonResult> ForgotPassword(ForgotPasswordViewModel forgotPasswordModel, string returnUrl = "", string returnUrlHash = "")
        {
            returnUrl = NormalizeReturnUrl(returnUrl);
            if (!string.IsNullOrWhiteSpace(returnUrlHash))
            {
                returnUrl = returnUrl + returnUrlHash;
            }

            var loginResult = await _logInManager.LoginAsync(forgotPasswordModel.UsernameOrEmailAddress, "ForgotPassword", GetTenancyNameOrNull());

            loginResult.User.SetNewPasswordResetCode();

            switch (loginResult.Result)
            {
                case AbpLoginResultType.Success:
                    return Json(loginResult);
                default:
                    throw _abpLoginResultTypeHelper.CreateExceptionForFailedLoginAttempt(loginResult.Result, forgotPasswordModel.UsernameOrEmailAddress, GetTenancyNameOrNull());
            }
        }
Run Code Online (Sandbox Code Playgroud)

之后检查 AbpUser 表

loginResult.User.SetNewPasswordResetCode();

我看不到用户的任何密码重置代码,它们都是空的。

有人可以指出我正确的方向。

提前致谢

感谢下面的回答是正确的,只是为了完成下面的工作。显然忽略最后的json返回

public virtual async Task ForgotPassword(ForgotPasswordViewModel forgotPasswordModel, string returnUrl = "", string returnUrlHash = "") { …

aspnetboilerplate abp

4
推荐指数
1
解决办法
995
查看次数

如何禁用某些应用程序服务的动态 WebAPI

我想关闭我的 ABP 项目中特定应用程序服务的自动 WebAPI 生成服务。

abp webapi applicationservice

4
推荐指数
1
解决办法
56
查看次数

没有 ORM 的 ABP

我最近偶然发现 ABP(以前称为 Asp.Net BoilerPlate)作为以模块化方式重建 Web 应用程序的框架。它确实非常有趣,并且附带了许多非常疯狂的基本元素,例如身份验证、日志记录、安全性、多租户、设置等等......

但是,据我目前的理解,ABP 与 EF Core 或 Dapper 是“强耦合”的,而且我不喜欢在代码中使用 ORM,我有一种更“数据库驱动”的方法并且喜欢编写询问我自己。

所以,主要问题是:可以在不使用 EFCore/Dapper 的情况下使用 ABP 吗?或者最好切换到其他模块化框架,例如OrchardCoreExtCore

编辑:2020 年 11 月 11 日@hikalkan 回复后。

嗨@hikalkan,感谢您的友好回复。也许我必须更多地解释我想要实现的目标,以便您可以更好地为我提供建议。我的目标是创建一个“可插入”网络应用程序,在其中我可以将一个模块替换为具有相同功能但细节不同的另一个模块。

一点介绍:我有一个针对中小型公司人力资源部门的“复杂”网络应用程序,许多客户都使用它,并且每个客户都在其场所安装了自己的副本。该应用程序由许多功能组成:个人数据、合同数据、培训数据、轮班等。但每个客户的模块都略有不同,而应用程序本身是一个旧的、单一的应用程序:它可以工作,但我必须维护不同的版本,几乎每个客户都有一个版本,非常困难且耗时。不要怪我,我已经“继承”了这个应用程序,并且必须以这种方式维护和改进它。

但是,最后,我可以花一些时间从头开始重建它,我希望它是“模块化的”,以便主要部分(身份验证、分析、数据库交互、主题、安全性、日志记录等)保持稳定& 可靠,在所有安装之间共享,每个客户都可以选择模块/插件。有点像 Wordpress,但更好。

例如,假设我有一个简单的模块“contactSimple”用于管理联系人(电子邮件、电话号码、寻呼机等),每个联系人在数据库中都有一个类型和一个值字段,非常基本,并且我的 90%客户对此感到满意。但剩下的 10% 希望添加注释字段、“是主要联系人”标志或其他细微更改。现在,我想做的是:开发“contactEnhanced”模块作为一个单独的类库,与“contactSimple”具有相同的界面和主要功能,将其编译为dll,只需更改web应用程序中的dll,更新如果需要的话,数据库,重新加载应用程序并发生新的 dll,而无需更改任何其他组件。

我本来想简单地使用动态反射来获取它,但后来我发现反射不太适合,因为速度慢且占用资源大,所以在上网时我找到了ABP。

现在,问题是:在您看来,ABP 是我正在寻找的框架/解决方案吗?请告诉我!

orm asp.net-core abp orchardcore

3
推荐指数
1
解决办法
1237
查看次数

激活 Castle.Proxies.AlertAppServiceProxy 时抛出异常

我正在尝试利用书籍和作者 abp 教程来构建示例应用程序。

在我的示例应用程序中,我有网站(而不是书籍)和警报(而不是作者)。

一切似乎都是对的。但是,一旦我加载 /alerts 页面,我就会收到以下错误。

寻找如何解决的方向......

我最接近的是这个链接:Abp.io 异常:激活 Castle.Proxies.ProcessesServiceProxy 时抛出异常

但是,我不确定该用户到底做了什么来解决他们的问题。

[14:56:47 INF] Authorization was successful.
[14:56:47 INF] Executing endpoint 'MyApp.Alerts.AlertAppService.GetListAsync (MyApp.Application)'
[14:56:47 INF] Route matched with {action = "GetList", controller = "Alert", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.Abp.Application.Dtos.PagedResultDto`1[MyApp.Alerts.AlertDto]] GetListAsync(Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto) on controller MyApp.Alerts.AlertAppService (MyApp.Application).
[14:56:47 ERR] ---------- RemoteServiceErrorInfo ----------
{
  "code": null,
  "message": "An internal error occurred during your request!",
  "details": null,
  "data": {
    "ActivatorChain": "Castle.Proxies.AlertAppServiceProxy"
  },
  "validationErrors": null
}

[14:56:47 …
Run Code Online (Sandbox Code Playgroud)

abp

3
推荐指数
1
解决办法
4891
查看次数