小编nak*_*ive的帖子

如何在.net WebApi2应用程序中消耗OAuth2令牌请求中的额外参数

我在一个大型.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环境中可靠地做到这一点?

asp.net oauth-2.0 asp.net-mvc-5 asp.net-web-api2

36
推荐指数
1
解决办法
1万
查看次数

如何防止Retrofit自动跟随302

我有一个身份验证调用,我正在尝试使用Android上的Retrofit.该调用将302返回到成功或失败页面.最初的302响应会返回维护身份验证成功所需的会话cookie,但是在我有机会使用cookie之前,Retrofit会自动将请求关闭到重定向URL.

有没有办法阻止重定向?或者有没有办法在Retrofit上编写响应处理程序,可以在进行第二次调用之前添加适当的标头?

cookies android retrofit okhttp

17
推荐指数
3
解决办法
9991
查看次数

活动在finish()之后不调用onDestroy()

我有三个活动,我们称之为一,二,三.从活动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)

android onresume activity-finish

5
推荐指数
1
解决办法
9742
查看次数

如何安装 Splunk Mint Gradle 插件?

根据 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)

环境:

  • 安卓工作室 3.4
  • 摇篮 5.2
  • Android Gradle 插件 3.4.0
  • Splunk Mint 插件 5.2.5

我怀疑 …

android splunk gradle

2
推荐指数
1
解决办法
850
查看次数