2sxc 找不到操作方法
2sxc Action method not found
我正在尝试 fiddle 使用自定义控制器功能,但我在执行未找到的操作时遇到了一些问题。
想知道这是否是我的错误实现、自定义 API 限制(关于数学的文档不多),或者只是错误的代码,所以欢迎任何帮助。
https://pasteboard.co/GViL7Ws.jpg
JS:
sxc(@Dnn.Module.ModuleID).webApi.post('hash/HashPassword', "myPassword");
控制器:
using DotNetNuke.Security;
using DotNetNuke.Web.Api;
using System.Web.Http;
using ToSic.SexyContent.WebApi;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
public class hashController : SxcApiController
{
public const int SaltByteSize = 24;
public const int HashByteSize = 20;
public const int Pbkdf2Iterations = 1000;
public const int IterationIndex = 0;
public const int SaltIndex = 1;
public const int Pbkdf2Index = 2;
[HttpPost]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
public static string HashPassword(string password)
{
var cryptoProvider = new RNGCryptoServiceProvider();
byte[] salt = new byte[SaltByteSize];
cryptoProvider.GetBytes(salt);
var hash = GetPbkdf2Bytes(password, salt, Pbkdf2Iterations, HashByteSize);
return Pbkdf2Iterations + ":" +
Convert.ToBase64String(salt) + ":" +
Convert.ToBase64String(hash);
}
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
private static byte[] GetPbkdf2Bytes(string password, byte[] salt, int iterations, int outputBytes)
{
var pbkdf2 = new Rfc2898DeriveBytes(password, salt);
pbkdf2.IterationCount = iterations;
return pbkdf2.GetBytes(outputBytes);
}
}
几次尝试后修复:
是
sxc(@Dnn.Module.ModuleID).webApi.post('hash/HashPassword', {password: myPassword})
控制器:
using DotNetNuke.Security;
using DotNetNuke.Web.Api;
using System.Web.Http;
using ToSic.SexyContent.WebApi;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
public class hashController : SxcApiController
{
public const int SaltByteSize = 24;
public const int HashByteSize = 20;
public const int Pbkdf2Iterations = 1000;
public const int IterationIndex = 0;
public const int SaltIndex = 1;
public const int Pbkdf2Index = 2;
[HttpPost]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
[ValidateAntiForgeryToken]
public dynamic HashPassword(string password)
{
var cryptoProvider = new RNGCryptoServiceProvider();
byte[] salt = new byte[SaltByteSize];
cryptoProvider.GetBytes(salt);
var hash = GetPbkdf2Bytes(password, salt, Pbkdf2Iterations, HashByteSize);
return Pbkdf2Iterations + ":" +
Convert.ToBase64String(salt) + ":" +
Convert.ToBase64String(hash);
}
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
private static byte[] GetPbkdf2Bytes(string password, byte[] salt, int iterations, int outputBytes)
{
var pbkdf2 = new Rfc2898DeriveBytes(password, salt);
pbkdf2.IterationCount = iterations;
return pbkdf2.GetBytes(outputBytes);
}
}
我正在尝试 fiddle 使用自定义控制器功能,但我在执行未找到的操作时遇到了一些问题。
想知道这是否是我的错误实现、自定义 API 限制(关于数学的文档不多),或者只是错误的代码,所以欢迎任何帮助。
https://pasteboard.co/GViL7Ws.jpg
JS:
sxc(@Dnn.Module.ModuleID).webApi.post('hash/HashPassword', "myPassword");
控制器:
using DotNetNuke.Security;
using DotNetNuke.Web.Api;
using System.Web.Http;
using ToSic.SexyContent.WebApi;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
public class hashController : SxcApiController
{
public const int SaltByteSize = 24;
public const int HashByteSize = 20;
public const int Pbkdf2Iterations = 1000;
public const int IterationIndex = 0;
public const int SaltIndex = 1;
public const int Pbkdf2Index = 2;
[HttpPost]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
public static string HashPassword(string password)
{
var cryptoProvider = new RNGCryptoServiceProvider();
byte[] salt = new byte[SaltByteSize];
cryptoProvider.GetBytes(salt);
var hash = GetPbkdf2Bytes(password, salt, Pbkdf2Iterations, HashByteSize);
return Pbkdf2Iterations + ":" +
Convert.ToBase64String(salt) + ":" +
Convert.ToBase64String(hash);
}
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
private static byte[] GetPbkdf2Bytes(string password, byte[] salt, int iterations, int outputBytes)
{
var pbkdf2 = new Rfc2898DeriveBytes(password, salt);
pbkdf2.IterationCount = iterations;
return pbkdf2.GetBytes(outputBytes);
}
}
几次尝试后修复:
是
sxc(@Dnn.Module.ModuleID).webApi.post('hash/HashPassword', {password: myPassword})
控制器:
using DotNetNuke.Security;
using DotNetNuke.Web.Api;
using System.Web.Http;
using ToSic.SexyContent.WebApi;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
public class hashController : SxcApiController
{
public const int SaltByteSize = 24;
public const int HashByteSize = 20;
public const int Pbkdf2Iterations = 1000;
public const int IterationIndex = 0;
public const int SaltIndex = 1;
public const int Pbkdf2Index = 2;
[HttpPost]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
[ValidateAntiForgeryToken]
public dynamic HashPassword(string password)
{
var cryptoProvider = new RNGCryptoServiceProvider();
byte[] salt = new byte[SaltByteSize];
cryptoProvider.GetBytes(salt);
var hash = GetPbkdf2Bytes(password, salt, Pbkdf2Iterations, HashByteSize);
return Pbkdf2Iterations + ":" +
Convert.ToBase64String(salt) + ":" +
Convert.ToBase64String(hash);
}
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
private static byte[] GetPbkdf2Bytes(string password, byte[] salt, int iterations, int outputBytes)
{
var pbkdf2 = new Rfc2898DeriveBytes(password, salt);
pbkdf2.IterationCount = iterations;
return pbkdf2.GetBytes(outputBytes);
}
}