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

Posted

技术标签:

【中文标题】IdentityServer 4,如何添加自定义登录页面【英文标题】:IdentityServer 4, how to add Custom Login page 【发布时间】:2020-04-23 06:09:44 【问题描述】:

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

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

Challenge(authProps, "oidc");

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

信息 查了一些资料,看到有人用下面这个

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

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

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

【问题讨论】:

你能发布初始化代码吗?我的意思是你如何设置 adp ? 你可以删除这个问题,它是重复的。对不起 你能给我们这个问题的重复链接吗? 【参考方案1】:

只需在 Startup.cs 中添加以下内容

services.ConfigureApplicationCookie(config =>

    config.Cookie.Name = "IdentityServer.Cookie";
    config.LoginPath = "/Auth/Login";
    config.LogoutPath = "/Auth/Logout";
);

【讨论】:

使用自定义 Angular 页面登录怎么样? 没关系。您可以有一个 API 端点将此路由映射到您的函数,然后您可以使用 fetch 或类似的方式查询路由。 有什么例子吗?提前致谢。 例如,您可以在控制器中执行如下操作: [Route("Auth/Login")] [HttpPost] public async IActionResult Foo(@Params) // 代码逻辑 然后您可以从您的客户端访问:http.post('host:port/Auth/Login', username, password)【参考方案2】:

您可以通过实施脚手架来解决您的问题。

身份服务器文档说 “包含 Identity 的应用程序可以应用脚手架来选择性地添加 Identity Razor 类库 (RCL) 中包含的源代码。您可能希望生成源代码,以便修改代码并更改行为。”

因此您可以根据需要更改 UI、端点及其行为。

Here is doc link

【讨论】:

以上是关于IdentityServer 4,如何添加自定义登录页面的主要内容,如果未能解决你的问题,请参考以下文章

IdentityServer4 - AuthorizeAttribute 不验证 JWT 令牌/自定义用户存储

如何在 IdentityServer4 中创建自定义授权类型

IdentityServer4 自定义授权模式

IdentityServer4中自定义控制器和CustomClientStore的CORS问题

使用 IdentityServer 与创建基于 JWT 的自定义身份验证

将 IdentityServer4 与自定义配置 DBContext 一起使用