Identity Server 4中的自定义登录视图

时间:2018-02-02 12:24:52

标签: .net asp.net-core identityserver4

我需要根据clientID自定义登录视图(登录,注销,登出,错误...)并选择外观(甚至,如果可能,添加行为)。我在Identity Server 3中看到了IViewService接口及其实现DefaultViewService。Link

我已经看到在第4版中已经消除了这个接口及其实现。

使用Identity Server 4的最佳方法是什么?

有些链接有一些实际的例子吗?

修改 对于NetCore 2.0,我们可以使用IViewLocationExpander接口。感谢这个界面,我设法改变了Razor视图的搜索路径:https://stackoverflow.com/a/39490990/1201787

2 个答案:

答案 0 :(得分:1)

IIdentityServerInteractionService.GetAuthorizationContextAsync(string)是你的朋友。

它将为您提供当前授权请求的详细信息,您可以从中发现客户端ID,然后使用IClientStore.FindClientByIdAsync(string)获取所需的信息。

答案 1 :(得分:1)

你最简单的方法(可能是最好的方法)是 - AccountController你有一个方法public async Task<IActionResult> Login(string returnUrl)(还有一个叫做Login的方法,但它是在用户提交登录后证书)。在此方法中,您可以调用var vm = await accountService.BuildLoginViewModelAsync(returnUrl);

这是一个LoginViewModel类,其中包含您的客户端名称(您可以扩展该类以包含更多内容)。根据您的需要,您可以根据名称为每个不同的客户端从控制器返回不同的视图。

修改

如果您使用快速启动,则所有这些 - 请查看here以获取更多信息。