小编Dan*_*iel的帖子

OAuth 2.0承载令牌与Mac令牌.为什么不使用Mac-Tokens?

我在这个主题中搜索了其他问题,但我发现这不是一个很好的答案.所以告诉我,如果我错了.我是这个话题的新手,你可以高兴地纠正我.以下是我在实际时刻的想法:

我现在在网上冲浪了两天,弄清楚授权网络请求的实际状态是什么.现在我很快发现,OAuth 2.0似乎是最常见的标准.但OAuth 2.0本身就是标准化以外的一切.在我看来,对于每个更大的公司来说,这是一堆乱七八糟的不同定制.但无论如何,有两种技术可以交换授权信息:Mac-Tokens和Bearer-Tokens.

在我看来,Mac-Tokens提供更多安全性.那为什么没有广泛实施呢?我能找到的唯一原因是因为它有点复杂.我听过多次说不推荐使用Mac-Tokens,如果客户端不是100%可信的话,因为客户端必须存储秘密.但差异在哪里?无论如何,客户端必须存储Authorazation-Information.在我看来,无论是持有者令牌还是mac-secret,无关紧要.但是有什么区别的是,每次请求都不会通过网络提交mac-secret(而不是bearer-token).

所以你能告诉我为什么不使用mac-tokens的理智?(除了更多的努力)我错过了什么?或者我错过了两种令牌技巧.

感谢您的阅读和帮助.

oauth bearer-token

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

值类型变量 - 由ref返回 - 在哪里生效?堆栈还是堆?

我最近听说过7.2中的新C#Feature,所以我们现在可以返回值类型的引用(例如int)甚至是值类型的只读引用.所以据我所知,值类型存储在堆栈中.当剩下方法时,它们会从堆栈中删除.那么当方法GetX退出时,int会发生什么?

private ref int GetX()
{
    // myInt is living on the stack now right?
    int myInt = 5;

    return ref myInt;
}

private void CallGetX()
{
    ref int returnedReference = ref GetX();
    // where does the target of 'returnedReference' live now? 
    // Is it somehow moved to the heap, because the stack of 'GetX' was removed right?
}
Run Code Online (Sandbox Code Playgroud)

我收到了错误

错误CS8168:无法通过引用返回本地'myInt',因为它不是ref本地(11,24)

那为什么它不起作用?它不起作用只是因为变量无法移动到堆中吗?这是问题吗?如果它们不在堆栈中,我们只能通过引用返回值类型吗?我知道这是两个问题.

第一:ref返回的值类型变量在哪里?堆栈还是堆?(我猜在堆上,但为什么)?

第二:为什么堆栈上创建的值类型不能通过引用返回?

所以这可以编译:

private int _myInt;

private ref int GetX()
{
    // myInt is …
Run Code Online (Sandbox Code Playgroud)

c# heap stack pass-by-reference c#-7.2

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

标签 统计

bearer-token ×1

c# ×1

c#-7.2 ×1

heap ×1

oauth ×1

pass-by-reference ×1

stack ×1