C# IdentityServer3发出部分登录cookie
我目前在我的Idsrv登录页面上有一个注册链接,该链接重定向到与Idsrv托管在同一管道上的MVC注册页面。注册流程如下所示:C# IdentityServer3发出部分登录cookie,c#,.net,asp.net-identity,identityserver3,C#,.net,Asp.net Identity,Identityserver3,我目前在我的Idsrv登录页面上有一个注册链接,该链接重定向到与Idsrv托管在同一管道上的MVC注册页面。注册流程如下所示: 创建帐户(电子邮件和密码)并保存到数据库 选择订阅并购买(使用userId将购买信息存储在数据库中) 重定向回客户端应用程序 过去,登录页面上的注册链接会将用户带到帐户创建页面,在他们输入电子邮件和密码后,我会使用以下代码发布Idsrv登录cookie: var login = new AuthenticatedLogin {
var login = new AuthenticatedLogin
{
IdentityProvider = IdentityServer3.Core.Constants.BuiltInIdentityProvider,
Subject = user.Id,
Name = user.UserName
};
this.Request.GetOwinContext().Environment.IssueLoginCookie(login);
订阅和购买页面用[IdentityServerFullLogin]属性修饰,以确保只有授权用户才能访问这些页面
此后,我添加了外部登录支持,并在完成本地帐户设置之前,使用部分登录将新的外部用户重定向到此注册序列。我遇到的问题是,现在我有[IdentityServerPartialIn]和[IdentityServerFullLogin]属性,它们需要在同一个控制器方法上,这显然不起作用。我想知道如何修改我原来的注册顺序(使用注册链接)以使用部分登录而不是完全登录,并发出完整登录cookie。似乎需要一个环境。IssuePartialLogiconOkie()方法来完成我需要做的事情,但不确定如何继续。您必须更改执行授权的方式。您可以在操作方法本身中显式/手动地使用这些属性,而不是使用这些属性。如果用户具有这两种登录类型中的任何一种,则可以通过简单的OWIN扩展方法了解:Got it,find创建一个自定义IAAuthenticationFilter,该筛选器使用GetIdentityServerPartialLogicInSync和GetIdentityServerFullLoginAsync确保用户部分或完全登录。谢谢