小编dev*_*r82的帖子

ASP.NET OAuth授权 - 使用ClientId和Secret以及用户名和密码之间的区别

我正在尝试OAuthAuthorizationServerProvider在ASP.NET WebAPI 2中实现一个简单的操作.我的主要目的是学习如何为移动应用程序设置令牌.我希望用户使用用户名和密码登录,然后接收令牌(以及刷新令牌,这样一旦令牌过期,他们就不必重新输入凭据).稍后,我希望有机会打开API供其他应用程序外部使用(比如使用Facebook api等......).

以下是我设置AuthorizationServer的方法:

app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions()
{
    AllowInsecureHttp = true,
    TokenEndpointPath = new PathString("/token"),
    AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(5),
    Provider = new SimpleAuthorizationServerProvider(new SimpleAuthorizationServerProviderOptions()
    {
        ValidateUserCredentialsFunction = ValidateUser
    }),
    RefreshTokenProvider = new SimpleRefreshTokenProvider()
});
Run Code Online (Sandbox Code Playgroud)

这是我的SimpleAuthorizationServerProviderOptions实施:

public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
    public delegate Task<bool> ClientCredentialsValidationFunction(string clientid, string secret);
    public delegate Task<IEnumerable<Claim>> UserCredentialValidationFunction(string username, string password);
    public SimpleAuthorizationServerProviderOptions Options { get; private set; }

    public SimpleAuthorizationServerProvider(SimpleAuthorizationServerProviderOptions options)
    {
        if (options.ValidateUserCredentialsFunction == null)
        {
            throw new NullReferenceException("ValidateUserCredentialsFunction cannot be …
Run Code Online (Sandbox Code Playgroud)

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

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

Android SQLiteOpenHelper - 每个表的不同类?

我正在阅读这篇文章(http://www.vogella.com/tutorials/AndroidSQLite/article.html),以了解Android应用程序中的SQLite数据库.

在文章中他有一个提示:

最好为每个表创建一个单独的类.此类定义静态onCreate()和onUpgrade()方法.这些方法在SQLiteOpenHelper的相应方法中调用.这样,即使您有多个表,SQLiteOpenHelper的实现仍然可读.

如果我正确理解了这个提示,我应该为我的数据库中的每个表都有一个类?

这真的是最好的做法吗?

如果是这样,那么使用多个表的复杂查询呢?如果创建在不同的类中,我该如何管理?

如何正确保存数据库版本?对于每个表的更改,我会更改数据库版本号吗?

谢谢

sqlite android android-sqlite

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

ASP.NET Core Web Api自动帮助页面

在以前的ASP.NET版本中,当我创建Web Api 2时,visual studio会自动为API自动生成文档.

它也在这里解释:http: //www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/creating-api-help-pages

我正在编写一个新项目,我已决定使用ASP.NET Core,但我没有看到类似于以前版本中存在的API生成文档的内容(我也猜测是它有点不同,因为所有控制器现在都继承自同一个Controller类).

但是,有没有办法为ASP.NET Core API生成帮助文件?

asp.net asp.net-core-mvc asp.net-core asp.net-core-1.0 asp.net-core-webapi

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

Appcelerator Hyperloop与普通Titanium模块

我开始玩Appcelerator Hyperloop了.虽然从第0天开始从JS访问本机API似乎很棒,但它确实引发了一些关于平台架构和性能的问题.

目前(AFAIK)Titanium应用程序具有主UI线程(运行本机UI控制器)和JS线程(运行JS逻辑).从JS到Native的每次调用都通过"Bridge"(这是应用程序中的扩展操作)传递.

此外,Titanium API并未尽可能多地涵盖所有本机API和摘要.但是,如果引入新API,Appcelerator可能需要一段时间才能将这些API实施到平台中.

我最喜欢Titanium的一个方面就是能够扩展它(使用iOS的Objective-c和Android的java) - 允许使用Titanium未涵盖的原生API,并在需要时开发真正的本机性能控件为JS做任何太"沉重"的事情.并且,如上所述,它为每个平台开发了100%原生.

既然Appcelerator引入了Hyperloop我已经完成了一个简单的测试应用程序,并发现Hyperloop没有被翻译成本机代码而只是普通的JS代码:

var UILabel = require('hyperloop/uikit/uilabel');
var label = new UILabel();
label.text = "HELLO WORLD!";
$.index.add(label); 
Run Code Online (Sandbox Code Playgroud)

另一件事是你必须在主线程上运行.

因此,就Hyperloop架构而言,我们基本上会想到一些事情:

  1. 我们还有一座桥吗?如果Hyperloop是JS,称为"特殊"Hyperloop需要,那么我们仍然有一个桥梁,现在不仅是一个桥梁,而且还需要做某种反射(这也是一个扩展的操作)?
  2. 到目前为止,JS运行它自己的线程 - 所以现在在单个主线程中运行似乎是更多UI阻塞操作的潜在来源.
  3. 老式模块是真正原生的(不包括桥接调用) - 那么启用Hyperloop的应用程序与那些相比如何呢?

没有太多关于Hyperloop的文档或文章解释了内部工作 - 所以如果有人有任何答案一直在尝试使用它可能会非常有帮助.

titanium appcelerator appcelerator-titanium appcelerator-hyperloop hyperloop

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

将 OAuth 用于使用我自己的 API 的移动设备和网站的正确方法是什么?

我有一个与 OAuth 2 的工作方式更相关的问题,但由于使用 IdentityServer 来实现 OAuth,我认为它是相关的。我在任何地方都找不到答案。

我正在构建一个网站和一个使用我自己的 API 的移动应用程序。我的应用程序的每个用户都会有一个用户名和密码,这将使他能够访问应用程序/网站,并通过 API 访问他的信息。

我不确定处理用户登录流程的正确方法:

  1. 在网站上我有自己设计的登录表单。我不想将用户移至我的身份验证服务器进行登录,然后让他批准他提供的信息 - 他是我系统上的用户 - 我可以访问所有信息 - 像 facebook 这样的kida 可以登录并访问信息——他们不会问你愿意给他们什么。那么隐式真的是解决这个问题的方法吗?
  2. 在移动应用程序上,我还有一个登录表单,现在我在这里读到(https://datatracker.ietf.org/doc/html/draft-ietf-oauth-native-apps-10)OAuth方法是在 WebView 中登录?Facebook 登录看起来不像是在其移动应用程序的 WebView 中。
  3. 我首先想到的方法是资源所有者。用户将登录、获取令牌和刷新令牌,然后可以开始使用我的 API。但是将我的 client_id 和密钥存储在移动应用程序上?在网站上的 javascript 文件上?感觉不对。我当然可以调用一个 API,该 API 将屏蔽这些内容并成为登录过程的代理……但是……(请阅读#4)。
  4. 将来我希望允许第三方开发者访问。为了让他们允许我的系统的用户登录,我将使用隐式流程。此外,我计划对这些开发者帐户进行受限的 API 访问(例如,对 API 的调用次数将受到计划的限制)。是什么阻止了这些开发人员在他们的网站上询问我系统上的帐户的用户名和密码,使用访问令牌和刷新令牌从我的服务器获取响应,并不受限制地使用我的 API,并有权访问整个用户资料?
  5. 假设我坚持资源所有者流程,从服务器接收一个令牌和一个刷新令牌。我应该在移动设备上存储什么以及如何存储?浏览器中应该存储什么以及如何存储?刷新令牌?每次他打开应用程序时都会使用该刷新令牌获取新的更新令牌?

编辑

只是为了澄清,因为我发现很多讲座和文章从 API 消费者的角度(即第三方开发人员)解释了该过程:我是 API 所有者和身份验证服务器所有者,我是所有者用户帐户(他们是我的服务的用户),我也是我自己的消费者(通过网站和移动应用程序),并且将来我希望第三方开发人员能够允许我的用户登录他们的我的服务帐户(有点像 Facebook 或 Google)

authentication oauth oauth-2.0 identityserver4

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

SQL 测量存储过程执行时间

我想测量在 SQL Server 中执行存储过程所需的时间。但不仅仅是测量整个存储过程的执行,我还想测量存储过程中每个操作所花费的时间,以便我可以找到瓶颈。

在 c# 中,为了在测试代码执行时间时完成这样的事情,我会在执行开始之前保存日期,当执行结束时,我将通过从当前时间(执行后)中减去开始时间来打印给我的 TimeSpan 对象。

我想知道如何在存储过程中使用 SQL Server 实现这样的事情,在那里我可以打印我在存储过程中的操作之间测量的时间跨度。

谢谢

sql sql-server stored-procedures

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

Android - 将 JSON 对象从 webview javascript 传递到 java

我有一个带有 webview 的 Activity 和 java 端的 javascript 接口。我想用 Java 编写一个方法,可以接受来自 webview 的 json 参数。

@JavascriptInterface
public String test(Object data) {
    Log.d("TEST", "data = " + data);
}
Run Code Online (Sandbox Code Playgroud)

在我的 webview javascript 上我调用:

MyAPI.test({ a: 1, b: 2 });
Run Code Online (Sandbox Code Playgroud)

但数据变量为空。

如何将 JSON 对象从 webview javascript 传递到本机方法?

谢谢

javascript android json webview

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

SQL选择系列中的第一个缺失值

我被问到以下内容:我有一个表(让我们称之为tbl),它有一个int类型的列(让它称为num),它有序列号:

num
---
 1
 2
 4
 5
 6
 8
 9
 11
Run Code Online (Sandbox Code Playgroud)

现在,您需要编写一个返回第一个缺失数字的查询(在此示例中,答案将为3).

这是我的答案(作品):

select top 1 (num + 1)
from tbl
where (num + 1) not in (select num from tbl)
Run Code Online (Sandbox Code Playgroud)

写完这篇文章之后,我被问到,如果tbl包含1000万条记录 - 如何提高性能(因为显然myinner查询会导致全表扫描).

我的想法是关于num字段的索引并且不存在.但我很乐意听到其他一些选择.

sql t-sql sql-server

5
推荐指数
3
解决办法
696
查看次数

ASP.NET Core MVC - 未应用内联 css 样式

当我将内联样式应用于 html 元素时,我在我的 ASP.NET MVC 项目中有一个奇怪的行为 - 它们没有显示在浏览器中。但是,如果我使用 css 类将相同的样式放在外部 css 文件中,它将起作用(即使将 css 类<style>放在同一页面上的标记中也不起作用。

例子:

不工作

<div style="height: 100px; width: 100px; background: red;">
    ABC
</div>
Run Code Online (Sandbox Code Playgroud)

不工作

<!DOCTYPE html>
<html>
<head>
    <style>
        .myClass {
            height: 100px;
            width: 100px;
            background: red;
        }
    </style>
</head>
<body>
    <div class="myClass">
        ABC
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在职的

mystyle.css

.myClass {
    height: 100px;
    width: 100px;
    background: red;
}
Run Code Online (Sandbox Code Playgroud)

索引.cshtml

<div class="myClass">
    ABC
</div>
Run Code Online (Sandbox Code Playgroud)

如果我不使用cshtml文件而只加载静态html文件,则所有变体都有效。

这是为什么?我们如何修复它?

css asp.net-mvc asp.net-core-mvc

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

Azure应用服务 - 无法通过指纹查找证书

我在Azure中有一个B1应用服务,我已经在其中安装了我的证书,如下所示: 在此输入图像描述

当我试图获得证书时,它找不到它.好像没有安装证书.这是我的代码:

using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
    certStore.Open(OpenFlags.ReadOnly);
    X509Certificate2Collection certCollection = certStore.Certificates.Find(
        X509FindType.FindByThumbprint,
        certificateThumbprint,
        false);

    if (certCollection.Count > 0)
    {
        return certCollection[0];
    }

    throw new Exception("Certificate not found!");
}
Run Code Online (Sandbox Code Playgroud)

我已经验证了证书指纹,甚至尝试将其硬编码为字符串.

当我尝试打印商店中的证书数量时,如下所示:

Console.WriteLine("certStore.Certificates.Count : " + certStore.Certificates.Count);
Run Code Online (Sandbox Code Playgroud)

它返回零证书.

我也试过改变StoreNameStoreLocation-还是同样的结果.即使没有给予任何StoreNameStoreLocation仍然没有找到任何证书.

ssl azure azure-web-sites

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