我正在使用 WebAssembly 并尝试从 C++ 发出 HTTPS 请求。我看过Emscripten FETCH API的解决方案并尝试使用它。
为了测试它,我创建了一个Test
类,在其中发送如下请求:
void Test::sendRequest() {
emscripten_fetch_attr_t attr;
emscripten_fetch_attr_init(&attr);
strcpy(attr.requestMethod, "GET");
attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY;
attr.onsuccess = &Test::onSuccess;
attr.onerror = &Test::onError;
emscripten_fetch(&attr, "http://127.0.0.1:5000/");
}
Run Code Online (Sandbox Code Playgroud)
我的 onSuccess 回调如下所示:
void Test::onSuccess(struct emscripten_fetch_t *fetch) {
printf("Finished downloading %llu bytes from URL %s.\n", fetch->numBytes, fetch->url);
setText(QString::fromUtf8(fetch->data));
emscripten_fetch_close(fetch); // Free data associated with the fetch.
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译时出现错误:
error: assigning to 'void (*)(struct emscripten_fetch_t *)' from incompatible type 'void
(Test::*)(struct emscripten_fetch_t *)'
attr.onsuccess = &Test::onSuccess;
^~~~~~~~~~~~~~~~ …
Run Code Online (Sandbox Code Playgroud) 使用 Lumen 从 JWT 获取一些错误:
无法创建令牌:不推荐从字符串中隐式转换键。请使用 InMemory 或 LocalFileReference 类
https://github.com/tymondesigns/jwt-auth/issues/2059
任何关于快速修复的建议,这似乎是新版本中的错误。
"n": "rKZ-1zdz_CoLekSynOtyWv6cPSSkV28Kb9kZZHyYL-yhkKnH_bHl8OpWiGxQiKP0ulLRIaq1IhSMetkZ8FfXH-iptIDu4lPb8gt0HQYkjcy3HoaKRXBw2F8fJQO4jQ-ufR4l-E0HRqwLywzdtAImNWmju3A4kx8s0iSGHGSHyE4EUdh5WKt-NMtfUPfB5v9_2bC-w6wH7zAEsI5nscMXnvz1u8w7g2_agyhKSK0D9OkJ02w3I4xLMlrtKEv2naoBGerWckKcQ1kBYUh6WASPdvTqX4pcAJi7Tg6jwQXIP1aEq0JU8C0zE3d33kaMoCN3SenIxpRczRzUHpbZ-gk5PQ",
"e": "AQAB",
Run Code Online (Sandbox Code Playgroud)
如何从这些值生成公钥?最好通过 python 或 Linux 程序。如果由于值无效而导致问题毫无意义,我很抱歉。
源头就在这里。
我将我的应用程序从 .NET Core 2.2 升级到 .NET Core 3.1。当我尝试使用 PostMan 测试我的端点时,我注意到收到 401 Unauth 错误。当我查看标题时,我发现到期时间无效:
我获取了以下不记名令牌:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiQm9iIiwibmJmIjoiMTYxNzk3Nzg1MSIsImV4cCI6IjE2MjMxNjE4NTYiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOlsiQmFza2V0YmFsbCIsIlJ1Z2J5IiwiRm9vdGJhbGwiXX0.QRLuXFeopf7QZ1NUzWcctuSfnNXiPgc2UH7NxAuHYvw
Run Code Online (Sandbox Code Playgroud)
我正在生成令牌端点并使用jwt.io对其进行解码,exp 字段为“1623161856”。
我将其转换为 Javascript 中的日期对象,它等于未来 60 天。
所以token肯定没有过期。不确定我在升级到 .NET Core 3.1 时是否遗漏了任何内容,但这里是相关代码:
在Startup.cs
我有
public void ConfigureServices(IServiceCollection services)
{
// Initial Setup
services.AddMvc();
services.AddSingleton<IConfiguration>(Configuration);
// Call this in case you need aspnet-user-authtype/aspnet-user-identity
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// Register the Swagger generator, defining one or more Swagger documents
services.AddSwaggerGen(c =>
{
c.SwaggerDoc(Configuration["v1"], new OpenApiInfo { Title = Configuration["Sports"], Version = Configuration["v1] });
});
services.AddDataProtection();
//Authentication …
Run Code Online (Sandbox Code Playgroud) 我收到一个带有验证码图像的 base64 字符串的 json,以便用户可以查看和输入验证码内容。我无法在 TImage 中显示此图像的问题。出现以下错误:
类 EPNGInvalidFileHeader 正在读取的文件不是有效的便携式网络图形”图像,因为它包含无效的标题。
字符串 base64
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQg
HBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICI
sIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQw
LDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM
jIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAyALQDASIAAh
EBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAw
QFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDA
AQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2Jyggk
KFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZ
WmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmq
KjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2u
Hi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQE
BAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDB
AcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRo
bHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5Ok
NERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6ws
PExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6
/9oADAMBAAIRAxEAPwD3OiiitiRrGuN8b+Nf+EQ
+w/8AEv8Atf2rzP8Alt5e3bt/2TnO79K7BsnoK8j
+NYIOh5BH
+v8A/adenlFCnXxcKdVXTv8AkznxM3Cm5R3O78O61/wkO
gW2qfZ/s/n7/wB1v37drFeuB6Z6Vec1wfhfxLpnhv4c6TJqE
xVpPO8uNBud8SvnA9Pc8Ve0z4jaDq12lsrz20rnan2hAoY
+mQSPzrorYCqqlR0oPkTa
+SZlGrHlXM9Tp3NQOasPHJ/zzb8qgaOT/nm35VyxsNldzUD
modZ1BNF0ubULmKYwxbdwReeWCjqQOprCsfGmk39pdX
WZreG22h2nUDJbOAACcn5TXbSw9WcOeMbrYxlJJ2ZuOa
gc1gJ460WaKeQySxrEQAHTmQnP3QDnt3x1FR2XjTSdQu
RAGlhdjhfOUAMfqCf1rqWDrpNuD0MXOPc3HNQuax7HxXY
6nqiWFvFc+a5YKxVdpwCexz29K2Hjk/55t
+VOVKdJ2mrMi99iuxqBzVho5P8Anm35VA8cn/PNvyrSNjN3
IHNV3NWHjk/55t
+VQNHJ/wA82/Kto2MmQOagc1O8cn/PNvyqB45P
+ebflW8bGTIHNQManeOT/nm35VA8cn/PNvyrojYyZCTzR
QY5M/6tvyorTQg
+jKD0rE/4THwv/wBDJo//AIHRf/FUjeMfC+P
+Rk0f/wADov8A4qvgPq1f
+R/cz7DmRtL1NeS/G/8A5gX/AG8f
+066d/ir4Kt55YpNcQsjFSUt5XUkHHDKpBHuDg15z8U/Gnh/
xJ/ZP9k6h9o+z
+d5v7mRNu7Zj7yjP3T0r28lwOKp46nOdOSWurTtszmxLUq
LS3/4Ju+APh/p
+t6BbatrTyXUbh0t7YOyLGods5Iwc7tx4OOfeuc
+JPhKz8L6navp+9bS7RisbNu2MpGQCecfMOvvXS
+A/iV4V0jwdZ6dqGotb3MBkDKbeRgcuzAgqp7N
+lcX8QviFp/i27sjZW91HBbI3+vVQxZiM9GPGFHevYwkcxlm
cnNS9nd76K2trdO2qOepTh7BWXvaE3hzWvFt/qosNM1a7l
mnj2ZuJWdYl4JbDEgYxjOM88da7Sfwh4vs4DdWvi24uLtRu
8iTdsJ9BliPzArz3wb420rwz4gkvZbe7kt5LQQkIi7g/wAhJw
WxjKnv0x9K7W8+N2iLbO1npmoSzjG1JgkannnLBmI4z2NV
j6GN9ulhqK5dOi19bk0oLl99u5VvvFkniL4e6xbXsYi1G1MQk
AGA481RnHY54I/xrn/A/hmLxHd3JupXW1ttjPGhwXY5x
+HBrmZvFXnXOszfYtp1LPyiXiPMqyenP3cdutaPhPx9/wAIv
9s/4ln2n7Ts/wCW
+zbt3f7Jz979K7ngK9HDVI4aNpN3SutL2v8AqZ8kpTTmS6r
YW0njCXTLCIQQm6Fsi7i2DkKTknPXJr1CXwfoTad9j
+wRABcCUDEmfXd1z+leKz
+JJ5/ED6taWgjlNz9pWNmLhTu3YOAM810i/FLxPNIscemW
TO5CqqwSEknoAN9RjcFjKkaapu1lrr1CEEr8xB4MdY/Flm7k
KqiQknsPLauiXVNa8W38yaZcfYdPiODIOGPpz1z7DGK8702
71X7aFsrF553jkjWNIWYkMhU4A54BJ/CtPRL/AMWxTSadp
TLbSbyXhlWJCW4B/wBZznjp7fWujFYPmm6qceZJWvstXdk
Rg0rNnZajpuv6Lp1xcw63LdoEPmLKDuAPGVJJwR17Vp
+F55Ljw5bSzSvLKS
+53YsT8x7n2xXHalc/ELT7dm1CaKKMjlXa1JYegHU1Dpd14
+1O2aTT2Dwo204S3QA/QgVxTwkqlD3qkN907fLRFezs9z0
lzUDmuIPhfx3e/wCkz6p5Ej9YvtTJtxx0QbR0zx/OmHwd4z
HXW/8Aycl/wrnjhKK3rRE6fmdmxqBzXHnwj4xHXWf/ACck/ …
Run Code Online (Sandbox Code Playgroud) 我建立了这个界面
export interface UserInfo {
success?: boolean,
user?: User,
employer?: Employer,
hr?: Hr
}
Run Code Online (Sandbox Code Playgroud)
现在当我这样做时
let data = await loginUser(loginData);
console.log(data.success);
Run Code Online (Sandbox Code Playgroud)
登录用户方法代码:
import {createApi, fetchBaseQuery} from "@reduxjs/toolkit/query/react";
import {BASE_API_ENDPOINT, LOGIN_API_ENDPOINT} from "../../constants/apis";
import {LoginData, UserInfo} from "../../models/apis/UserData";
export const loginApi = createApi({
reducerPath: 'loginReducer',
baseQuery: fetchBaseQuery({ baseUrl: BASE_API_ENDPOINT }),
endpoints: (builder) => ({
loginUser: builder.mutation<UserInfo, LoginData> ({
query: (data: LoginData) => ({
url: LOGIN_API_ENDPOINT,
method: "POST",
body: data
}),
transformResponse: (rawResult : UserInfo) => {
return rawResult
}
})
}) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Base64 编码转换图像并将其保存到数据库中。这是我的程序:
func HandleUpload(w http.ResponseWriter, r *http.Request, formFileName string) (string, string, string, error) {
// Maximum upload of 10 MB files
r.ParseMultipartForm(1 << 2)
file, handler, err := r.FormFile(formFileName)
if err != nil {
// If there is an error that means form is empty. Return nil for err in order
// to validate result as required.
return "", "", "", nil
}
defer file.Close()
fmt.Printf("Uploaded File: %+v\n", handler.Filename)
fmt.Printf("File Size: %+v\n", handler.Size)
fmt.Printf("MIME Header: %+v\n", …
Run Code Online (Sandbox Code Playgroud) 我尝试将我的网站与 WordPress API 连接。后端和前端都位于本地主机上。创建用户运行良好,但是当我尝试登录时,我得到一个
JWT 配置不正确
错误。
这是我使用 Insomnia 时遇到的错误:
{
"success": false,
"statusCode": 403,
"code": "jwt_auth_no_auth_header",
"message": "Authorization header not found.",
"data": []
}
Run Code Online (Sandbox Code Playgroud)
我在 auth 插件上添加了这行代码:
{
"success": false,
"statusCode": 403,
"code": "jwt_auth_no_auth_header",
"message": "Authorization header not found.",
"data": []
}
Run Code Online (Sandbox Code Playgroud)
我不知道问题出在后面还是前面的代码上。并添加SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
到我的 .htaccess
我正在尝试将 asp.net 核心 DataProtectionProvider 与支持服务器场的单个数据库一起使用。我为商店实现了一个 IXmlRepository,我成功地向运行我的服务器的两台机器提供了相同的证书。我确认我正在以相同的顺序使用相同用途的字符串,但是当我尝试从机器 a 编码的机器 ba 字符串中取消保护时,我得到了一个通用的 CryptographicException。
如果机器 a 和机器 b 是 2 个不同的操作系统,这有关系吗?(Linux 与 Windows 服务器)
我得到的例外是:
{System.Security.Cryptography.CryptographicException:抛出了“System.Security.Cryptography.CryptographicException”类型的异常。在 Microsoft.AspNetCore.Cryptography.UnsafeNativeMethods.ThrowExceptionForBCryptStatusImpl(Int32 ntstatus) 在 Microsoft.AspNetCore.Cryptography.UnsafeNativeMethods.ThrowExceptionForBCryptStatus(Int32 ntstatus) 在 Microsoft.AspNetCore.DataProtection.Cng.Gcm. pbAdditionalAuthenticatedData, UInt32 cbAdditionalAuthenticatedData)
在 Microsoft.AspNetCore.DataProtection.Cng.Internal.CngAuthenticatedEncryptorBase.Decrypt(ArraySegment)1 ciphertext, ArraySegment
1 个额外的 AuthenticatedData) 在 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status) 在 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector,[Dangerer , Boolean& wasRevoked) 在 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(Byte[] protectedData) 在 Microsoft.AspNetCore.DataProtection.DataProtectionCommonExtensions.Unprotect(IDataProtectorprotector, String protectedData)
我为附件创建了 API,如果我发送文件,它应该接收带有文件的模型信息,如果我没有发送模型数据显示的文件,则模型为空
模型
public class AttachmentFilesViewModel
{
public long Id { get; set; }
public string FileName { get; set; }
public string FileExt { get; set; }
public IFormFile files { get; set; }
public AttachmentViewModel AttachmentViewModel {get;set; }
}
Run Code Online (Sandbox Code Playgroud)
型号2
public class AttachmentViewModel
{
public long Id { get; set; }
public string Type { get; set; }
public long TypeID { get; set; }
public string FileDesc { get; set; }
public List<AttachmentFilesViewModel> attachmentFiles {get;set; }
} …
Run Code Online (Sandbox Code Playgroud) asp.net-core ×3
jwt ×3
base64 ×2
c# ×2
.net ×1
.net-core ×1
api ×1
c++ ×1
delphi ×1
emscripten ×1
encryption ×1
fetch-api ×1
go ×1
javascript ×1
jwk ×1
jwt-auth ×1
lumen ×1
png ×1
postgresql ×1
python ×1
reactjs ×1
redux ×1
rsa ×1
typescript ×1
webassembly ×1
wordpress ×1