我使用IdentityServer4和OpenId来验证我的MVC应用程序中的用户,并希望添加我自己的声明.但我不确定哪个OpenIdConnectEvents我应该这样做.
本教程说我......
在身份验证流程中,您可能希望修改从IDP获得的声明.在ASP.NET Core 1.0中,您可以从OpenID Connect中间件在AuthenticationValidated事件中执行声明转换.
您在AuthenticationValidated期间添加的任何声明都存储在会话身份验证cookie中.
但是,此事件在ASP.NET Core 1.1中不可用
我试图在TokenValidated事件中做到这一点..
var principal = context.Request.HttpContext.User;
principal.Identities.First().AddClaim(new Claim("TenantId", user.TenantId.ToString()));
Run Code Online (Sandbox Code Playgroud)
但是当我在身份验证后列出用户声明时,它未列出.
@foreach (var claim in User.Claims)
{
<dt>@claim.Type</dt>
<dd>@claim.Value</dd>
}
Run Code Online (Sandbox Code Playgroud) 我看了一遍,无法真正找到解决问题的优雅方案......
<div class="viewPerson">
<strong>Name:</strong> <span data-bind="text: Person.Name"></span>
</div>
<div class="editPerson">
<strong>Name:</strong> <input type="text" data-bind="value: Person.Name"> </span>
<input type="submit" value="Save" data-bind="click: Save" />
</div>
Run Code Online (Sandbox Code Playgroud)
我在一个页面(Knockout 2.2.1)上有两个数据绑定用于同一个字段(Name),一个在我的"View Div"中,一个在我的"Edit Div"中.有没有一种简单的方法让我说不要更新"View Div",直到它被保存回数据库.
这是jsfiddle中的一个例子http://jsfiddle.net/NoseBagUK/bvw4j/3/
到目前为止,我所拥有的最好的方法是拥有Person对象的两个副本,一旦ajax魔法发生,我就有了一个同步两个Person对象的函数.喜欢这个.. http://jsfiddle.net/NoseBagUK/jjK4j/1/
任何帮助非常感谢.
菲尔