我在这个主题中搜索了其他问题,但我发现这不是一个很好的答案.所以告诉我,如果我错了.我是这个话题的新手,你可以高兴地纠正我.以下是我在实际时刻的想法:
我现在在网上冲浪了两天,弄清楚授权网络请求的实际状态是什么.现在我很快发现,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的理智?(除了更多的努力)我错过了什么?或者我错过了两种令牌技巧.
感谢您的阅读和帮助.
我最近听说过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)