这是使用DataProtection在ASP.NET Core MVC中保护表单模型的好方法



我尝试过创建ASP.NET Core MVC应用程序,其中我想保护表单模型,尤其是ID。

我发现了使用方法-ProtectUnprotect字符串的DataProtection。

我已经使用了此实现:

public class HomeController : Controller
    {
        readonly IDataProtector _protector;
        private readonly IUserRepository _userRepository;
        public HomeController(IDataProtectionProvider provider, IUserRepository userRepository)
        {
            _protector = provider.CreateProtector("DataProtectionDemo.Controllers.HomeController");
            _userRepository = userRepository;
        }
        [HttpGet]
        public async Task<IActionResult> Index(int id)
        {
            var user = await _userRepository.GetUserDetail(id);
            user.Id = _protector.Protect(user.Id);
            return View(user);
        }
        [HttpPost]
        public async Task<IActionResult> Index(UserViewModel model)
        {
            try
            {
                model.Id = _protector.Unprotect(model.Id);
                await _userRepository.SaveUser(model);
                return RedirectToAction(nameof(Index));
            }
            catch (Exception e)
            {
                model.Error = e.Message;
                return View(model);
            }
        }

在这种情况下,我想用加密的字符串保护隐藏字段中的用户ID,但是我不知道使用DataProtection是否正确。我知道有关授权策略的提议,这可能是下一步检查用户的许可,但我想知道这种额外的方式是创建更好的保护。

是保护形式模型的好方法吗?

我在 DataProtection中的github上打开了此问题:

https://github.com/aspnet/dataprotection/issues/278

答案是该解决方案应该可以正常工作。

相关内容

  • 没有找到相关文章

最新更新