我成功实现了我的自定义OAuthAuthorizationServerProvider.但是当我登录并检索令牌时,我的客户端不知道用户的角色,声明等.
我目前添加了一个webapi控制器来返回委托人的声明列表,但我对此并不满意.
请求令牌时,当前响应如下所示:
{
access_token: "qefelgrebjhzefilrgo4583535",
token_type: "bearer",
expires_in: 59
}
Run Code Online (Sandbox Code Playgroud)
问:如何让它返回类似下面的片段?
{
access_token: "qefelgrebjhzefilrgo4583535",
token_type: "bearer",
expires_in: 59,
user: {
name: 'foo',
role: 'bar'
}
}
Run Code Online (Sandbox Code Playgroud)
我到目前为止的进展:
文件OAuthAuthorizationServerProvider#TokenEndpoint(OAuthTokenEndpointContext)说:
在成功的令牌端点请求的最后阶段调用.应用程序可以实现此调用,以便对用于发出访问或刷新令牌的权利要求进行任何最终修改.也可以使用此调用以向Token端点的json响应主体添加其他响应参数.
我找不到任何如何自定义响应的示例,并且asp-net Identity的源代码尚未发布,所以我很困惑.
我按照dropwizard和hibernate的教程没有问题.现在我在我的实体中有非平凡的注释,我希望hibernate为我生成表格,以及类似的东西.那么,我该如何改变hibernate的配置呢?我可以给它一个hibernate.cfg.xml吗?如果可以的话,我是否必须再次建立连接?
我发现了这个PR,但它似乎还没有公开发布(我的jar中没有hibernateBundle.configure)
但也许我在寻找错误的东西.到目前为止,我只是想设置hibernate.hbm2dll.auto.毕竟,可能还有另一种方法可以在Dropwizard中启用hibernate表生成 ...那么,有什么帮助吗?
谢谢.
编辑:我从另一个角度处理问题,显式创建模式而不是使用hbm2ddl.auto.见建议的答案.
我正在尝试使用authorization_code授权流程设置我的身份验证.我以前曾经使用它grant_type=password,所以我知道这些东西应该如何工作.但是在使用时grant_type=authorization_code,我无法让它返回任何其他东西invalid_grant
这是我的设置:
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/auth/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(5),
Provider = new SampleAuthProvider()
});
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
AuthenticationType = "Bearer"
});
Run Code Online (Sandbox Code Playgroud)
SampleAuthProvider是以下类:https://gist.github.com/anonymous/8a0079b705423b406c00
基本上,它只是记录每一步并验证它.我试过了这个请求:
POST http://localhost:12345/auth/token
grant_type=authorization_code&code=xxxxxx&client_id=xxxxx&redirect_uri=https://xxxx.com/
Content-Type: application/x-www-form-urlencoded
Run Code Online (Sandbox Code Playgroud)
它正在经历:
OnMatchEndpointOnValidateClientAuthentication就这样.我希望它能打电话OnValidateTokenRequest,OnGrantAuthorizationCode接下来,但事实并非如此.我不知道为什么.
xxxx请求中的's不是占位符,我是这样尝试的.也许中间件会自行进行一些检查并因此拒绝请求?我尝试了redirect_uriwith的变种http,没有任何协议,没有尾随斜线...
它也适用于自定义grant_type.因此,如果我太绝望了,我想我可以用它来模拟authorization_code,但我宁愿不必那样做.
TL; DR
使用后我的OAuthAuthorizationServerProvider回报.{"error":"invalid_grant"}OnValidateClientAuthenticationgrant_type=authorization_code
谢谢你的帮助!
编辑
正如RajeshKannan所指出的,我在配置上犯了一个错误.我没有提供AuthorizationCodeProvider …
让我们说我正在使用的模板中的某处:
<div *ng-for="#fooItem of foo">
{{fooItem.bar.baz.value}}
</div>
Run Code Online (Sandbox Code Playgroud)
我希望能够在循环中编写类似的东西,{{theBaz}}而不是fooItem.bar.baz每次都使用.有没有办法实现这一目标?也许某些语法允许定义任意变量?
该文件提到,涉及部件/指令设定值,但显然没有什么简单的用法.
我正在尝试在我的Angular 2组件中声明的元素上调用函数.问题是我不知道如何从我的JS代码中检索元素.如果我可以将元素从模板传递给JS代码,它可以工作,但使用document.querySelector不会返回任何内容.
示例代码(plunk):
@View({
template: `
<div>
<span id="p1">{{name}}</span>
<span #p2>{{name}}</span>
</div>
`,
encapsulation: ViewEncapsulation.Native
})
export class Person {
sayHello(e) {
p1 = document.querySelector('p1');
console.log('p1:', p1)
p2 = document.querySelector('p2');
console.log('p2:', p2)
alert('VanillaId: ' + (p1 ? p1.innerHTML : 'null') +
'\nAngularId: ' + (p2 ? p2.innerHTML : 'null'));
}
}
Run Code Online (Sandbox Code Playgroud)
我怀疑它与阴影dom有关,但我不知道如何获取阴影根并使用它来进行查询.this似乎没有暴露任何有用的访问dom.