IdentityServer3发布部分登录cookie



我目前在Idsrv登录页面上有一个注册链接,该链接重定向到与Idsrv托管在同一管道上的MVC注册页面。注册流程如下:

  1. 创建帐户(电子邮件和密码)并保存到数据库
  2. 选择订阅并购买(将购买信息存储在具有userId的DB中)
  3. 重定向回客户端应用程序

在过去,登录页面上的注册链接会将用户带到帐户创建页面,并且在他们输入电子邮件&密码我会使用以下代码发布Idsrv登录cookie:

var login = new AuthenticatedLogin
                {
                    IdentityProvider = IdentityServer3.Core.Constants.BuiltInIdentityProvider,
                    Subject = user.Id,
                    Name = user.UserName
                };
   this.Request.GetOwinContext().Environment.IssueLoginCookie(login);

订阅&购买页面使用[IdentityServerFullLogin]属性进行装饰,以确保只有授权用户才能访问这些页面。

此后,我添加了外部登录支持,并在完成本地帐户设置之前,使用部分登录将新的外部用户重定向到此注册序列。我遇到的问题是,现在我有[IdentityServerPartialLogin]和[IdentityServer FullLogin]属性,它们需要在相同的控制器方法上,这显然不起作用。我想知道如何修改我最初的注册顺序(使用注册链接),使用部分登录而不是完全登录,并发布完全登录cookie。似乎需要一个Environment.IssuePartialLoginCookie()方法来完成我需要做的事情,但不确定如何继续。

您必须更改执行授权的方式。您可以在操作方法本身中显式/手动地使用这些属性,而不是使用这些属性。如果用户具有这两种登录类型中的任何一种,有一些简单的OWIN扩展方法可以学习:https://identityserver.github.io/Documentation/docsv2/advanced/owin.html

最新更新