小编Dav*_*vid的帖子

.NET Core UseCors()不添加标头

这将是Access-Control-Allow-Origin标头如何工作的重复,但那里的方法也不适合我.我希望我只是遗漏了一些东西.

我试图Access-Control-Allow-Origin通过我的.NET Core Web API在我的响应中获得一个标题,我通过AJAX访问它.

我尝试过几件事.除非另有说明,否则所有内容都在Startup.cs文件中.

方法1

根据Microsoft文档:

public void ConfigureServices(IServiceCollection services)
{
    // Add database
    services.AddDbContext<DbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DbConnection")));

    // Add the ability to use the API with JSON
    services.AddCors();

    // Add framework services.
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
    {
        using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
        {
            serviceScope.ServiceProvider.GetService<DbContext>().Database.Migrate();
            serviceScope.ServiceProvider.GetService<DbContext>().EnsureSeedData();
        }
    }

    app.UseCors(builder => builder.WithOrigins("https://localhost:44306").AllowAnyMethod());

    app.UseJwtBearerAuthentication(new JwtBearerOptions
    {
        Authority = Configuration["Authentication:AzureAd:AADInstance"] + …
Run Code Online (Sandbox Code Playgroud)

c# cross-domain-policy cors asp.net-core asp.net-core-webapi

15
推荐指数
2
解决办法
2万
查看次数

如何将AcquireTokenAsync中收到的令牌与Active Directory一起存储

问题陈述

我正在使用.NET Core,我正在尝试将Web应用程序与Web API进行对话.两者都要求使用[Authorize]所有类的属性进行身份验证.为了能够在服务器到服务器之间进行通信,我需要检索验证令牌.由于Microsoft教程,我已经能够做到这一点.

问题

在本教程中,他们使用调用来AcquireTokenByAuthorizationCodeAsync将令牌保存在缓存中,以便在其他地方,代码可以只执行一次AcquireTokenSilentAsync,这不需要去管理局验证用户.

此方法不查找令牌缓存,而是将结果存储在其中,因此可以使用其他方法(如AcquireTokenSilentAsync)查找它

当用户已经登录时会出现问题.OpenIdConnectEvents.OnAuthorizationCodeReceived由于没有收到授权,因此永远不会调用存储的方法.只有在重新登录时才会调用该方法.

还有另一个事件叫做:CookieAuthenticationEvents.OnValidatePrincipal当用户仅通过cookie验证时.这是有效的,我可以获得令牌,但我必须使用AcquireTokenAsync,因为那时我没有授权码.根据文件,它

从授权机构获取安全令牌.

这使得调用AcquireTokenSilentAsync失败,因为令牌尚未被缓存.而且我宁愿不总是使用AcquireTokenAsync,因为那总是发给管理局.

如何判断AcquireTokenAsync被缓存的令牌以便我可以AcquireTokenSilentAsync在其他地方使用?

相关代码

这一切都来自主Web应用程序项目中的Startup.cs文件.


这是事件处理的完成方式:

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
    Events = new CookieAuthenticationEvents()
    {
        OnValidatePrincipal = OnValidatePrincipal,
    }
});

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
    ClientId = ClientId,
    Authority = Authority,
    PostLogoutRedirectUri = Configuration["AzureAd:PostLogoutRedirectUri"],
    ResponseType = OpenIdConnectResponseType.CodeIdToken,
    CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"],
    GetClaimsFromUserInfoEndpoint = false,

    Events = new OpenIdConnectEvents()
    {
        OnRemoteFailure = OnAuthenticationFailed, …
Run Code Online (Sandbox Code Playgroud)

c# active-directory asp.net-web-api .net-core

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

Python从Python Dictionary获取字符串(键+值)

我有字典结构.例如:

dict = {key1 : value1 ,key2 : value2}
Run Code Online (Sandbox Code Playgroud)

我想要的是组合键和值的字符串

需要的字符串 - >> key1_value1,key2_value2

任何Pythonic获得此方法的方法都会有所帮助.

谢谢

def checkCommonNodes( id  , rs):
     for r in rs:
         for key , value in r.iteritems():
             kv = key+"_"+value
             if kv == id:
                 print "".join('{}_{}'.format(k,v) for k,v in r.iteritems())
Run Code Online (Sandbox Code Playgroud)

python string dictionary

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

C++使用相同的代码循环遍历对象和指针

所以我有两个容器

set<Person>
vector<Person*>
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以修改以下转换lambda代码,以便可以使用任何容器?

transform(container.begin(), container.end(), back_inserter(data),
          [](const Person* p) { return PairResults(p->getTime(), p->getName()); }
);
Run Code Online (Sandbox Code Playgroud)

现在我只能让它在矢量上工作.

谢谢.

>> 解决方案代码

非常感谢安德鲁对这个问题的帮助!

c++ pointers stl

5
推荐指数
2
解决办法
151
查看次数

多个c++文件导致“多重定义”错误?

我第一次在一个项目中使用多个 C++ 文件。两者都需要包含受保护的(#ifndef)头文件。但是,当我这样做时,我收到了多重定义错误。

我拥有的是两个直接调用标头的 .cpp 文件,一个间接调用标头的文件(另一个包含它),然后是包含它的另外两个头文件。

那么我需要做什么来消除错误呢?

错误:

obj\Debug\main.o||在函数Z14sortLibQtyTest4BookS_':| [PATH]\miscFuncs.h|16|multiple definition ofsortLibQtyTest(Book, Book)'

代码:

bool sortLibQtyTest(Book a, Book b){ return a.getQty() > b.getQty(); }
Run Code Online (Sandbox Code Playgroud)

应该提到的是,这并不是唯一给我带来问题的函数,可能有十多个,而且有些不是那么短和甜蜜。此外,多个文件中都需要这些函数。

c++ multiple-definition-error

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

在 C# 中从 .dll 文件中提取图标组

我正在尝试从中提取图标imageres.dll。特别是“我的电脑”或“这台电脑”图标。问题是在Win7和Win10之间,图标编号发生了变化。然而,图标组却没有(109)。有没有办法获取该图标组,然后让计算机确定要使用该组的哪个图标,就像它确定要为我的应用程序使用哪个图标一样?

这是我用来通过索引获取特定图标的代码:

public class GetIcon {
    public static Icon Extract(string file, int number) {
        IntPtr large;
        IntPtr small;
        ExtractIconEx(file, number, out large, out small, 1);
        try {
            return Icon.FromHandle(small);
        }
        catch {
            return null;
        }
    }
    [DllImport("Shell32.dll", EntryPoint = "ExtractIconExW", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    private static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
}
Run Code Online (Sandbox Code Playgroud)

谢谢。

c# icons

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

使用本机Javascript中的类查找元素的索引

有没有办法获取类名的索引(即类"className"的第三个元素是3而不使用jQ?

我不知道jQ,我现在没时间学习它,我不想在代码中包含我至少不了解的代码.

谢谢.

顺便说一下,我使用了jQ而不是拼写出来,所以如果有人有同样的问题,这些结果可以在Google中过滤掉.如果我拼写出来,并且有人在Google中使用了NOT运算符,那么这个运算符也会消失.

javascript indexing class

3
推荐指数
2
解决办法
8187
查看次数

使用Python和py-postgresql返回查询中的空格

我正在使用py-postgresql驱动程序.每当我做SELECT它的工作正常,但我得到返回的列的全宽,用空格.所以,如果我有一个字段,character(25)其中包含"名称",并执行:

SELECT name WHERE name = 'Name'
Run Code Online (Sandbox Code Playgroud)

我明白了

"Name                     " << "Name" followed by 21 spaces
而不仅仅是 Name

示例我直接从IDLE运行的代码

db = posgresql.driver.connect(user     = [USERNAME],
                              password = [PASSWORD],
                              host     = [HOST],
                              port     = [PORT]
)

db.query("SELECT [FIELD] FROM [TABLE] WHERE [TRUE]")
Run Code Online (Sandbox Code Playgroud)

没有问题,它返回,是的,我知道如何剥离结尾的空白,但它可能需要在那里,所以我真的想弄清楚如何让事情返回没有多余的空白.

python postgresql whitespace removing-whitespace

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

使用花括号分隔C++中的代码

我真正喜欢IDE的一个方面是能够"最小化"代码段,以便:

while(conditions){
  // Really long code...
}
Run Code Online (Sandbox Code Playgroud)

可以变成:

while(conditions){ // The rest is hidden
Run Code Online (Sandbox Code Playgroud)

我的问题是这样的东西是否可以接受格式化

// Code
{
  // More code
}
// Code
Run Code Online (Sandbox Code Playgroud)

我知道在括号内完成的任何事情都有限制范围,但我也可以在外部范围内编辑变量.

所以,对于一个简短的,不必要的例子

int x = 1;
{ // Create new variable, add and output
  int y = 2;
  cout << x + y;
}
Run Code Online (Sandbox Code Playgroud)

会成为:

int x = 1;
{ // Create new variable, add and output (The rest of the code is hidden)
Run Code Online (Sandbox Code Playgroud)

这样可以接受,还是避开?

这是我想隐藏的一个真实例子.

/// Add line to msg vector
// Check to see …
Run Code Online (Sandbox Code Playgroud)

c++ code-formatting

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

错误的模板参数数量

我对cpp没有多少经验,更不用说systemc了.

为什么要做这项工作?

sc_in<sc_uint<8>> a,b;
Run Code Online (Sandbox Code Playgroud)

adder.cpp:5:错误:'a'未在此范围内声明
adder.cpp:5:错误:'b'未在此范围内声明
adder.cpp:5:错误:模板参数数量错误(2,应该是1)

这确实有效:

sc_in<int> a,b;
Run Code Online (Sandbox Code Playgroud)

c++ systemc

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

RegSetValueEx与RRF_RT_REG_SZ在注册表中生成REG_EXPAND_SZ?

标题几乎说明了一切,当我尝试使用RegSetValueEx做一个REG_SZ大小的条目,我得到一个REG_EXPAND_SZ当我看到注册表.

这是我正在使用的代码

const char REG_KEY_PATH[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
const char REG_VALUE_NAME[] = "Scroff";

// Get where the app lives
char appLoc[MAX_PATH];
GetModuleFileNameA(NULL, appLoc, MAX_PATH);

// Create the key value
HKEY regKey = 0;
RegCreateKeyExA(HKEY_LOCAL_MACHINE, REG_KEY_PATH, 0, NULL, 
                REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE | KEY_WOW64_64KEY, 
                NULL, &regKey, NULL);

RegSetValueExA(regKey, REG_VALUE_NAME, 0, RRF_RT_REG_SZ, (unsigned char*)appLoc, strlen(appLoc));
Run Code Online (Sandbox Code Playgroud)

该代码有效,但它不是具有REG_SZ类型的注册表,而是REG_EXPAND_SZ.为什么会这样,我该如何解决?

我使用VS 2015 Enterprise在Windows 10上运行.

谢谢.

c++ registry winapi types

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