小编vai*_*dil的帖子

MS Graph API:无效的身份验证令牌

我正在尝试使用Microsoft Graph API查询Outlook/O365邮箱中的邮件.我在Azure门户中注册了我的应用程序,并收到了查询API的必要信息.该应用已获得Mail.Read许可.(我无权访问Azure门户,我被告知它是以这种方式设置的.)但是,当我从OAuth端点获取令牌时,它在任何后续调用中都不起作用.我正在使用Python的请求模块进行测试.

为什么这个电话失败了?好像我传递了所有正确的信息,但我显然遗漏了一些东西.

我通过执行POSTon 获取令牌:

https://login.microsoftonline.com/my.domain/oauth2/token
Run Code Online (Sandbox Code Playgroud)

我传递了必要的参数:

data = {'grant_type': 'client_credentials', 'client_id': CLIENTID, 'client_secret': SECRET, 'resource': APPURI}
Run Code Online (Sandbox Code Playgroud)

我收到这样的回复:

{
    'resource': 'APPURI',
    'expires_in': '3599',
    'ext_expires_in': '3600',
    'access_token': 'TOKENHERE',
    'expires_on': '1466179206',
    'not_before': '1466175306',
    'token_type': 'Bearer'
}
Run Code Online (Sandbox Code Playgroud)

但是,我尝试使用该令牌,但它对我所称的任何内容都不起作用.我将它作为标题传递:

h = {'Authorization': 'Bearer ' + TOKEN}
Run Code Online (Sandbox Code Playgroud)

我正在调用此网址:

url = 'https://graph.microsoft.com/v1.0/users/my.email.address@example.com/messages'
Run Code Online (Sandbox Code Playgroud)

具体来说,我用这个:

r = requests.get(url, headers=h)
Run Code Online (Sandbox Code Playgroud)

回复是401:

{
    'error': {
        'innerError': {
            'date': '2016-06-17T15:06:30',
            'request-id': '[I assume this should be removed for privacy]'
         },
         'code': 'InvalidAuthenticationToken',
         'message': 'Access …
Run Code Online (Sandbox Code Playgroud)

azure office365 microsoft-graph

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

SSLCertificateChainFile 已过时

我使用的是 Apache 2.4.12,所以SSLCertificateChainFile现在已过时,任何中间证书都应该包含在服务器证书文件中。比其他证书的任意组合-我想不出但如何做到这一点,只是里面指定的文件会导致无效键错误的站点证书。如何在我使用SSLCertificateFile指定的文件中正确包含中间证书?

apache ssl mod-ssl

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

.NET Core中的自定义授权属性

我正在.NET Core 1.1中构建一个API.我在基本控制器中构建了一个自定义User对象HttpContext.User,我的所有其他控制器都是从该控制器继承的,并且我默认启用了身份验证(必须[AllowAnonymous]在必要时手动禁用).该User对象具有IsAdmin属性.现在我正在检查用户是否是每个相关功能顶部的管理员,如下所示,但我觉得必须有一种方法来添加自定义属性来简化和清理此代码.

供参考,User.IsAdmin是这方面的简写:

bool.Parse(HttpContext.User.FindFirst("IsAdmin")?.Value)
Run Code Online (Sandbox Code Playgroud)

而不是这个:

[HttpGet]
public async Task<IActionResult> Get()
{
    if (!User.IsAdmin)
        return Forbid();

    // logic
}
Run Code Online (Sandbox Code Playgroud)

我喜欢这个(或类似的东西):

[AdminOnly]
[HttpGet]
public async Task<IActionResult> Get()
{
    // logic
}
Run Code Online (Sandbox Code Playgroud)

我试着查看源代码[AuthorizeAttribute]来尝试构建,但它只是一个shell而且我不知道真正的魔法在哪里发生.

我怎么能做到这一点?

c# asp.net-core-mvc asp.net-core asp.net-core-webapi

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

安装扩展程序未检测到Visual Studio 2017

我正在尝试安装仅在Visual Studio 2017上支持的扩展.我使用的是Professional,我从未安装过RC,只有RTM版本.但是,未检测到VS 2017(请参阅下面的安装日志).其他扩展安装得很好,大概是因为它们也支持VS 2015,我确实安装了它.这些扩展确实出现在2015年和2017年.

我尝试了修复安装,然后完全卸载并重新安装,但没有解决问题.具体的扩展是Roslynator 2017.

我如何解决这个问题,以便检测到VS 2017,我可以为它安装扩展程序?

安装日志:

3/15/2017 2:21:53 PM - Microsoft VSIX Installer
3/15/2017 2:21:53 PM - -------------------------------------------
3/15/2017 2:21:53 PM - Initializing Install...
3/15/2017 2:21:54 PM - Extension Details...
3/15/2017 2:21:54 PM -  Identifier         : 9289a8ab-1bb6-496b-9992-9f7ea27f66a8
3/15/2017 2:21:54 PM -  Name               : Roslynator 2017
3/15/2017 2:21:54 PM -  Author             : Josef Pihrt
3/15/2017 2:21:54 PM -  Version            : 1.2.51
3/15/2017 2:21:54 PM -  Description        : A collection of 170+ analyzers and 170+ refactorings …
Run Code Online (Sandbox Code Playgroud)

visual-studio visual-studio-extensions visual-studio-2017

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

jQuery验证扩展方法不起作用

我将下面的规则添加到现有的jQuery Validate脚本中extension,但是这个片段导致它破坏而根本不验证.我之前和之后尝试了所有可能的逗号组合,我也尝试过使用acceptmimetypes 的方法,但到目前为止还没有任何工作.如果我注释掉这个片段(以及它之前的行上的注释),代码可以正常工作,但添加它会导致它中断.

这是一个jsFiddle代码按原样(不起作用),这里有一个完全相同的代码,除了代码片段被注释掉(工作正常).

代码片段本身:

form1upload: {
    extension: "jpg|jpeg|pdf|doc|docx|png"
}
Run Code Online (Sandbox Code Playgroud)

完整代码:

jQuery(document).ready(function() {
    jQuery("#grantapp").validate({
        errorClass:"errorlabels",
        rules: {
            form1name: "required",
            form1building: "required",
            form1position: "required",
            form1phonex: "required",
            form1besttime: "required",
            form1projtitle: "required",
            form1benefit: "required",
            form1timeframe: "required",
            form1relevance: "required",
            form1description: "required",
            form1amount: "required",
            form1acceptchk: "required",
            form1upload: {
                extension: "jpg|jpeg|pdf|doc|docx|png"
            }
        },
        messages: {
            form1name: "You must enter your name.",
            form1building: "You must enter your building.",
            form1position: "You must enter your position.",
            form1phonex: "You must enter your phone …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate

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

SSRS - 自定义参数布局已从报告中删除

我在新计算机上安装了Visual Studio 2015的新副本以及SSDT 12月预览版.报表服务器是SQL Server 2008 R2.我可以成功查看和构建我的报告,没有问题,但对于大约一半的报告,我收到以下警告消息:

Custom parameter layout was removed from the report. /
SQL Server 2014 Reporting Services and earlier do not support custom parameter layout.
Run Code Online (Sandbox Code Playgroud)

每次清理/重建时都会显示该消息,因此某些内容不会像VS声明那样永久更改.我甚至不知道自定义参数布局是什么,所以我很确定我不需要担心这个.如何禁用警告消息或修复它抱怨的问题?

sql-server visual-studio reporting-services

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

编译时间可以改善.运行"dotnet build --build-profile"以获取更多信息

我在VS 2015 Update 3,Windows 10,.NET Core 1.0中.当我在我的解决方案中构建项目时,我收到标题中的消息:

(编译时间可以改进.运行"dotnet build --build-profile"获取更多信息)

但是,当我在任何项目中运行时,我得到了这个:

项目MyProj.Web(.NETCoreApp,Version = v1.0)之前已编译过.跳过编译.

如果我清理解决方案并删除所有binobj文件夹,那么该命令会像正常一样构建项目,而不会因--build-profile标志而打印出额外的信息.在仍然打印消息后,在Visual Studio中构建.

我应该做些什么来纠正这个问题?

.net visual-studio visual-studio-2015 asp.net-core

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

没有属性,路由不起作用

编辑: 在 GitHub 上打开一个问题,以使用答案中的信息澄清文档。

我正在尝试在我的 .NET Core MVC 应用程序中设置路由(用于 API)。我相信我已经正确配置了所有内容,但除非该操作明确设置了路由属性,否则没有路由工作(全部返回 404)。这里提到同样的问题,但他不知道是什么解决了这个问题。

我把属性放回去,它起作用了。我删除了它们,它没有。最终通过删除和重新添加路由配置的一些神奇咒语 - 换句话说,将其关闭并重新打开 -UseMvcWithDefaultRoute()在没有路由属性的情况下工作。不知道那里发生了什么。

这是我所拥有的简化版本。有什么问题?为什么在没有设置属性的情况下路由不能工作?

在这个例子中,我试图POST/login/register.

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(config =>
    {
        var policy = new AuthorizationPolicyBuilder()
                         .RequireAuthenticatedUser()
                         .Build();
        config.Filters.Add(new AuthorizeFilter(policy));
    })
        .AddJsonOptions(options =>
            options.SerializerSettings.ContractResolver = 
                new CamelCasePropertyNamesContractResolver());

public void Configure(IApplicationBuilder app,
    IHostingEnvironment env,
    ILoggerFactory loggerFactory)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseDefaultFiles();
    app.UseStaticFiles();

    app.UseMvcWithDefaultRoute();
}
Run Code Online (Sandbox Code Playgroud)

我还尝试手动指定路线:

app.UseMvc(routes =>
{ …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core-mvc .net-core asp.net-core

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

在EF Core中实现递归属性加载

我在.NET Core 1.1.0,EF Core 1.1.0,VS 2015上.

我正在编写一个帖子/评论系统,我需要一个函数来加载评论及其所有子项及其相关属性.这是我的课程的简化版本:

public class Comment
{
    public long Id { get; set; }

    public string Content { get; set; }

    public User User { get; set; }

    public ICollection<Comment> Replies { get; set; }
}

public class User
{
    public long Id { get; set; }

    public string Name { get; set; }

    public Avatar Avatar { get; set; }
}

public class Avatar
{
    public string Url { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

任何给定的评论都可以有任意数量的回复:

-PARENT …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-core asp.net-core

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

为OO语言编写API究竟意味着什么?

我被要求为我选择的高级OO语言编写API(我将使用Java).当然,API需要执行特定的功能,但它们是我知道我可以完成的非常基本的事情.

我熟悉Web应用程序的API概念,这很简单,但是为OO语言编写API究竟意味着什么?在Java的情况下,这是否意味着编写一个可以导入的包并通过类/函数提供所需的功能,所以我会写a)包和b)一个单独的模块来测试它?(为了澄清,除了"编写API"和"它需要做X,Y和Z"之外,我没有提供任何信息.进一步澄清:我提到了Web应用程序API概念,只是为了表明我知道什么是API是.这不是任何类型的Web API.)

java oop

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