小编d60*_*402的帖子

为什么OAuth 2拥有资源所有者密码凭据授予?

为什么有人会将OAuth 2用于此类拨款?我的意思是,如果客户端已经拥有资源所有者的名称和密码,为什么不使用资源服务器使用的任何身份验证工具作为资源所有者进行身份验证?

我不明白这里的理由.有人可以解释一下吗?

oauth

8
推荐指数
1
解决办法
3697
查看次数

HttpPost的HttpClient执行在Android 3.2上显着慢于2.3.3

任何人都知道为什么下面的代码在Android 3.2(三星Galaxy 10.1"Tab)上比在2.3.3(摩托罗拉Droid X)上运行慢4倍?

在Android 2.3.3上,client.execute()调用平均需要350毫秒.3.2以下平均需要1400毫秒.

此外,无论是在UI线程还是后台线程中运行,结果都是相同的.

这是操作系统错误还是硬件问题?或者我在代码中没有做正确的事情?不幸的是我不能让ADB连接到我的3.2虚拟设备,所以我不能排除硬件问题,但我的直觉告诉我这是一个Honeycomb问题.

HttpResponse resp = null;
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpClient client = new DefaultHttpClient(params);
ArrayList<BasicNameValuePair> postParms = new ArrayList<BasicNameValuePair>();
postParms.add(new BasicNameValuePair("name", "test"))

try
{
    HttpPost hp = new HttpPost("http://myserver/path/method");
    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParms);
    hp.setEntity(formEntity);

    Long start = SystemClock.elapsedRealtime();
    resp = client.execute(hp);
    Long stop = SystemClock.elapsedRealtime();
    Log.i("Time = " + (stop-start) + "ms");
}
...
Run Code Online (Sandbox Code Playgroud)

performance android httpclient http-post android-3.0-honeycomb

6
推荐指数
1
解决办法
743
查看次数

不建议使用Auth0模拟。我应该改用什么?

在我们的网站上,管理员应该能够以用户(客户端)的身份查看网站。我计划为此使用Auth0,只是注意到他们的模拟功能已被弃用。

我可以在Redux中强制某些登录标志,以允许管理员以用户身份查看,但是,要从API获取用户的任何数据,我要从登录期间Auth0生成的访问令牌中获取用户ID。因此,API将仅从当前登录的用户访问令牌中获取数据。

有人知道有什么方法可以模拟用户吗?我认为通过解析访问令牌中的用户ID来获取该用户的任何数据,从而对我的API施加了限制,如果我错了,请更正我。

我能想到的唯一方法是,如果管理员“以用户身份查看”,则可以在API调用中传递用户的ID。在控制器中,我可以检查用户ID字段是否存在并使用它代替当前登录的用户,但是我认为传递用户ID并不是一个好主意。也许我可以在每个请求上添加一个中间件,并且如果该用户ID在API调用中存在,我可以检查该用户的角色以确保它是可以验证请求的管理员。

你怎么看?关于此方法还有其他想法/批评吗?

谢谢!!

api impersonation access-token reactjs auth0

6
推荐指数
1
解决办法
405
查看次数

将"AES"指定为KeyGenerator.getInstance()中的算法究竟做了什么?

我很困惑为什么在生成加密密钥时需要指定一个算法,如"AES" ,例如..

KeyGenerator kg = KeyGenerator.getInstance("AES");
Run Code Online (Sandbox Code Playgroud)

它显然不用于指定密钥的大小,因为AES密钥可以是128,192或256位.那部分将通过init()来完成......

kg.init(256, new SecureRandom());
SecretKey key = kg.generateKey();
Run Code Online (Sandbox Code Playgroud)

对于它的价值,上面的示例代码来自http://android-developers.blogspot.de/2013/02/using-cryptography-to-store-credentials.html

此外,NIST FIPS-197声明......

没有为AES算法识别弱密钥或半弱密钥,并且对密钥选择没有限制.

...这样会让我相信任何 128,192或256位都可以用作密钥.

显然,当我获得密码实例时指定"AES",例如..

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
Run Code Online (Sandbox Code Playgroud)

...表示要使用的密码算法是必要的.我只是没有得到为密钥生成指定它的目的.

谢谢.

java encryption cryptography aes key-generator

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

使用ShowcaseView定位操作栏菜单项

我正在尝试将ShowcaseView(v5.2.3)集成到一个应用程序中,但是当我尝试定位一个操作栏菜单项时,应用程序崩溃时会遇到运行时异常消息" 当主题没有ActionBar时,不能使用insertShowcaseViewWithType ".该活动绝对有一个带菜单项的操作栏.这在Android v5.1.1和v4.4.2上都会发生

崩溃的堆栈跟踪如下......

java.lang.RuntimeException: insertShowcaseViewWithType cannot be used when the theme has no ActionBar
     at com.github.amlcurran.showcaseview.targets.ActionBarReflector.getHomeButton(ActionBarReflector.java:43)
     at com.github.amlcurran.showcaseview.targets.ActionBarReflector.getActionBarView(ActionBarReflector.java:36)
     at com.github.amlcurran.showcaseview.targets.ActionItemTarget.setUp(ActionItemTarget.java:49)
     at com.github.amlcurran.showcaseview.targets.ActionItemTarget.getPoint(ActionItemTarget.java:43)
     at com.github.amlcurran.showcaseview.ShowcaseView$1.run(ShowcaseView.java:176)
     at android.os.Handler.handleCallback(Handler.java:739)
     at android.os.Handler.dispatchMessage(Handler.java:95)
     at android.os.Looper.loop(Looper.java:135)
     at android.app.ActivityThread.main(ActivityThread.java:5254)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Run Code Online (Sandbox Code Playgroud)

app模块build.gradle如下......

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.d60402.myappname"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        } …
Run Code Online (Sandbox Code Playgroud)

android showcaseview

4
推荐指数
2
解决办法
6008
查看次数

使用`gsub`删除"print.xtable"的无关空格

我是R开发的新手,必须修改一些现有的代码.具体来说,我需要更改一个print()调用,以便删除多余的连续空格字符.

我找到了sanitize.text.function参数,并成功将我的自定义函数传递给print()函数.它完成了我需要做的事情.该代码如下:

print(xtable(x,...),type="html",
      sanitize.text.function = function(s) gsub(" {2,}", "", s),...)
Run Code Online (Sandbox Code Playgroud)

现在我要做的是将"匿名"/"内联"函数代码提取到命名函数中,如此...

clean <- function(s) { gsub(" {2,}", "", s) }
print(xtable(x,...),type="html",sanitize.text.function = clean(s),...)
Run Code Online (Sandbox Code Playgroud)

但是,当我执行此操作时,我得到以下内容:

gsub中的错误("{2,}","",s):找不到对象的'

定义函数的愿望是双重的:

  1. 创建一个可以在其他地方引用的可重用代码块,以及
  2. 能够添加gsub()可能需要的更多或类似的执行,

例如,

clean <- function(s) { 
    gsub(" {2,}", "", s)
    gsub(">(.*?:)", "<span style=float:left>\1</span>", s)
}

print(xtable(x,...),type="html",sanitize.text.function = clean(s),...)
Run Code Online (Sandbox Code Playgroud)

r gsub xtable

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