我需要根据clientID自定义登录视图(登录,注销,登出,错误...)并选择外观(甚至,如果可能,添加行为)。我在Identity Server 3中看到了IViewService接口及其实现DefaultViewService。Link。
我已经看到在第4版中已经消除了这个接口及其实现。
使用Identity Server 4的最佳方法是什么?
有些链接有一些实际的例子吗?
修改 对于NetCore 2.0,我们可以使用IViewLocationExpander接口。感谢这个界面,我设法改变了Razor视图的搜索路径:https://stackoverflow.com/a/39490990/1201787
答案 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以获取更多信息。