我在一个大型.net MVC 5 Web解决方案中有一个api特定项目.我正在利用开箱即用的WebApi2模板通过api对用户进行身份验证.使用个人帐户进行身份验证,获取访问令牌所需的请求正文是:
grant_type=password&username={someuser}&password={somepassword}
Run Code Online (Sandbox Code Playgroud)
这按预期工作.
但是,我需要在scaffolded方法"GrantResourceOwnerCredentials"中添加第三维.除了检查用户名/密码之外,我还需要添加一个设备ID,用于限制从用户帐户到特定设备的访问.目前尚不清楚如何将这些额外的请求参数添加到已定义的"OAuthGrantResourceOwnerCredentialsContext"中.此上下文目前为UserName和Password腾出空间,但显然我需要包含更多内容.
我的问题很简单,是否有一种标准方法可以扩展OWIN OAuth2令牌请求的登录要求以包含更多数据?而且,您如何在.NET WebApi2环境中可靠地做到这一点?
我有一个身份验证调用,我正在尝试使用Android上的Retrofit.该调用将302返回到成功或失败页面.最初的302响应会返回维护身份验证成功所需的会话cookie,但是在我有机会使用cookie之前,Retrofit会自动将请求关闭到重定向URL.
有没有办法阻止重定向?或者有没有办法在Retrofit上编写响应处理程序,可以在进行第二次调用之前添加适当的标头?
我有三个活动,我们称之为一,二,三.从活动ONE开始,按钮按下开始活动TWO.从活动TWO开始,按钮开始活动三.
很简单.
现在,活动THREE需要从应用程序访问一些数据(可能存在也可能不存在).在THREE的onResume()方法中,检查数据,如果不存在则活动结束,如下所示:
@Override
protected void onResume() {
super.onResume();
/* ... get data from app ... */
if (data == null) {
Toast.makeText(this, "Data not found", Toast.LENGTH_SHORT).show();
finish();
return;
}
/* ... other logic ... */
}
Run Code Online (Sandbox Code Playgroud)
当data == null三,完成,摧毁并返回到TWO.一切都很好.现在在TWO中,按后退按钮调用finish()TWO,但TWO从不调用onDestroy().用户返回到ONE就好了,但是任何后续返回TWO的意图都不起作用并且不会抛出任何错误.TWO处于完成(并暂停)的状态,但从未被破坏,因此无法恢复.
那么,为什么在这种情况下三重要?如果我删除finish()上面代码块中的调用,并依赖于"自然"完成三个(通过使用后退按钮),当用户返回到ONE时,TWO已被正确销毁.
好吧,这里真的让人感到困惑......
保持finish()呼叫到位,我可以通过直接从ONE启动THREE来缓解挂断,然后"自然地"完成它(后退按钮).在THREE被销毁(第二次)之后,TWO按预期打开.
我读过的一切都已经说我应该是确定通话finish()中onResume()的一项活动.但在这种情况下,它会使某些状态处于不良状态,并阻止我破坏呼叫活动.
想法?还是我把你的大脑翻了个遍?
编辑:
进一步的探索发现了这颗宝石......
finish()使用postDelay()大约500毫米的处理程序在THREE 周围调用将允许TWO按预期关闭.像这样:
@Override
protected void onResume() {
super.onResume();
/* ... get data from app …Run Code Online (Sandbox Code Playgroud) 根据 Splunk MINT 文档 ( https://docs.splunk.com/Documentation/MintAndroidSDK/5.2.x/DevGuide/Requirementsandinstallation ),您必须手动下载 Gradle 插件工件并将其包含在您的项目中。
我成功地下载并部署了这个工件到 Artifactory 的本地实例,因为它已经以 maven repo 格式存档。
为了测试集成,我简单地创建了一个全新的项目并添加/应用了 mint 插件。从这里开始,Gradle 同步失败并出现以下错误:
Caused by: java.lang.NoSuchFieldError: javacTask
at com.splunk.mint.gradle.android.plugin.utils.VariantUtilsKt.getJavaTask(VariantUtils.kt:13)
at com.splunk.mint.gradle.android.plugin.api.AspectJTransform.setupVariant(AspectJTransform.kt:81)
at com.splunk.mint.gradle.android.plugin.api.AspectJTransform$prepareProject$1.execute(AspectJTransform.kt:57)
at com.splunk.mint.gradle.android.plugin.api.AspectJTransform$prepareProject$1.execute(AspectJTransform.kt:43)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1$1.run(DefaultListenerBuildOperationDecorator.java:150)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:58)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:147)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:144)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
... 126 more
Run Code Online (Sandbox Code Playgroud)
我怀疑 …