如何将脆弱数据(例如连接字符串)从一个控制器传递到另一个控制器

卡帕 S。

我是 asp.net core 的新手,我试图开发一个在线 SQL 数据库管理器,它可以在任何 SQL 数据库上运行,通过后:ServerAddress、Login、Password 和 DatabaseType(我的 ConnectionInformation 模型)。

类似于 SSMS 但在线的东西。

我想将我的 ConnectionInformation 模型从登录控制器传递到数据库控制器。

重定向到操作使用公开我所有数据的查询字符串。TempData 只接受字符串,将我的模型转换为 json 并不是解决这个问题的最优雅的方法。

登录控制器:

public class LoginController : Controller
{
    private readonly ILoginLogic _loginLogic;

    public LoginController(ILoginLogic loginLogic)
    {
        _loginLogic = loginLogic;
    }

    [HttpGet]
    public IActionResult Index()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult Index(ConnectionInformationViewModel connectionViewModel)
    {
        if (!ModelState.IsValid)
            return View();

        ConnectionInformation connection = Mapper.Mapper.ConnectionInformationMapper(connectionViewModel);

        var connectionSuccess = _loginLogic.ConnectToDatabase(connection);

        if (connectionSuccess)
            return RedirectToAction("Index", "Database", connection);
        else
            return View(); // TODO: Return view with error or handle it in js
    }
}

数据库控制器:

 public class DatabaseController : Controller
    {
        private readonly IDatabaseLogic _databaseLogic;

        public DatabaseController(IDatabaseLogic databaseLogic)
        {
            _databaseLogic = databaseLogic;
        }

        public IActionResult Index(ConnectionInformation connection)
        {
            var databases = _databaseLogic.GetDatabases(connection);
            return View(databases);
        }
    }

Prehaps 我的方法是完全错误的。我的主要目标是检查我是否可以连接到数据库,如果可以,我想对该数据库执行查询操作,直到用户注销。

克里斯普拉特

嗯,简单地说,您必须以某种方式保留信息。在这方面,有多种选择。您可以将它保存在客户端的本地存储中,并在每个进一步的请求中实际将其传回。不过,这对于 SPA 风格的应用程序效果更好,因为您几乎可以通过 AJAX 完成所有操作。另一种技术上的客户端存储机制是使用发布的连接信息设置会话 cookie。在这里,我谈论的是显式设置和读取具有“会话”生命周期的 cookie,而不是使用会话。

或者您实际上可以使用真正的会话,即Session. TempData基本上只是Session无论如何,但在这里它是不合适的,因为您需要确保TempData每次访问时都保留它,否则它不会在下一个请求中幸存下来。如果您正在这样做,那么您不妨直接使用Session而不必担心。

无论您做什么,都非常需要序列化。无法持久保存实际的 C# 对象实例,因此您必须将其写入关系存储(如数据库)或将其序列化为 JSON。

一种避免必须保留实际连接信息的替代解决方案是基本上创建您自己的连接池。这将需要一个带有ConcurrentDictionaryivar的单例范围的类,并且可能SemaphoreSlim在读取和写入该字典期间使用锁定,这样您就不会创建和孤立连接。然后,您只需要以某种方式将密钥分配给字典客户端中的特定连接,例如通过Session或饼干。这实际上也更安全一些,因为您不会在初始帖子之后保留数据库连接信息,但是如果同时使用的用户太多,您最终可能会耗尽可用的服务器连接。当然,无论如何这都可能是一个问题。您还需要一些用于驱逐连接的策略。这不是最简单的设置。

就个人而言,我只是坚持使用Session这个。它足够安全,只要你采取标准的会话劫持预防措施,并且实施起来很简单。如果您正在构建一个 SPA 风格的应用程序,那么我会坚持使用本地存储,因为这将立即更好地保持信息客户端开始,但它需要更多的管道。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数据从一个视图控制器传递到另一个SWIFT

来自分类Dev

如何将数据从一个视图控制器传递到另一个SWIFT

来自分类Dev

如何将数据从一个视图控制器传递到另一个?

来自分类Dev

如何将数据从一个视图控制器传递到另一个视图控制器,并且在视图控制器之间有一个显示视图控制器

来自分类Dev

从AngularJS如何将数据从一个控制器+模板传递到另一个控制器+模板?

来自分类Dev

在我的情况下,如何将数据从一个控制器传递到另一个控制器

来自分类Dev

如何将响应从一个控制器传递到另一个?

来自分类Dev

如何将值从一个控制器传递到ASP.Net MVC3中的另一个控制器

来自分类Dev

如何将 NSMutableDictionary 从一个视图控制器传递到另一个视图控制器?

来自分类Dev

如何将 FXML ComboBox 实例从一个控制器传递到另一个控制器?

来自分类Dev

如何在CakePHP 3中将数据从一个控制器传递到另一个控制器?

来自分类Dev

将模型从一个控制器传递到另一个

来自分类Dev

如何将数据从一个视图控制器传递到导航控制器中嵌入的另一个视图控制器

来自分类Dev

如何将对象数组从一个控制器传递到另一个?

来自分类Dev

将特定数据从一个控制器传递到另一个

来自分类Dev

似乎无法将数据从一个控制器传递到另一个

来自分类Dev

无法将字符串传递给另一个控制器

来自分类Dev

如何将按钮从一个视图控制器隐藏到另一个

来自分类Dev

无法使用Segue Swift 5将数据从一个控制器传递到另一个控制器

来自分类Dev

将数据从一个控制器传递到另一个非子级或父级控制器的最佳实践?

来自分类Dev

组件,在 Angularjs1.5 中绑定 - 将数据从一个控制器传递到另一个控制器

来自分类Dev

如何将对象列表从一个控制器传递到另一控制器?

来自分类Dev

如何在angularjs中将对象数据从一个控制器传递到另一个控制器

来自分类Dev

如何通过重定向URL将模型属性对象的值从一个控制器传递到另一个控制器

来自分类Dev

将变量的值从控制器传递到另一个控制器

来自分类Dev

在我的情况下如何将数据传递到另一个控制器?

来自分类Dev

如何将user.id从一个控制器传递到另一个“ nil:NilClass的未定义方法'id'”

来自分类Dev

如何将JSON对象从一个控制器传递到另一个(/ view to view)?

来自分类Dev

从一个控制器读取数据到另一个

Related 相关文章

  1. 1

    如何将数据从一个视图控制器传递到另一个SWIFT

  2. 2

    如何将数据从一个视图控制器传递到另一个SWIFT

  3. 3

    如何将数据从一个视图控制器传递到另一个?

  4. 4

    如何将数据从一个视图控制器传递到另一个视图控制器,并且在视图控制器之间有一个显示视图控制器

  5. 5

    从AngularJS如何将数据从一个控制器+模板传递到另一个控制器+模板?

  6. 6

    在我的情况下,如何将数据从一个控制器传递到另一个控制器

  7. 7

    如何将响应从一个控制器传递到另一个?

  8. 8

    如何将值从一个控制器传递到ASP.Net MVC3中的另一个控制器

  9. 9

    如何将 NSMutableDictionary 从一个视图控制器传递到另一个视图控制器?

  10. 10

    如何将 FXML ComboBox 实例从一个控制器传递到另一个控制器?

  11. 11

    如何在CakePHP 3中将数据从一个控制器传递到另一个控制器?

  12. 12

    将模型从一个控制器传递到另一个

  13. 13

    如何将数据从一个视图控制器传递到导航控制器中嵌入的另一个视图控制器

  14. 14

    如何将对象数组从一个控制器传递到另一个?

  15. 15

    将特定数据从一个控制器传递到另一个

  16. 16

    似乎无法将数据从一个控制器传递到另一个

  17. 17

    无法将字符串传递给另一个控制器

  18. 18

    如何将按钮从一个视图控制器隐藏到另一个

  19. 19

    无法使用Segue Swift 5将数据从一个控制器传递到另一个控制器

  20. 20

    将数据从一个控制器传递到另一个非子级或父级控制器的最佳实践?

  21. 21

    组件,在 Angularjs1.5 中绑定 - 将数据从一个控制器传递到另一个控制器

  22. 22

    如何将对象列表从一个控制器传递到另一控制器?

  23. 23

    如何在angularjs中将对象数据从一个控制器传递到另一个控制器

  24. 24

    如何通过重定向URL将模型属性对象的值从一个控制器传递到另一个控制器

  25. 25

    将变量的值从控制器传递到另一个控制器

  26. 26

    在我的情况下如何将数据传递到另一个控制器?

  27. 27

    如何将user.id从一个控制器传递到另一个“ nil:NilClass的未定义方法'id'”

  28. 28

    如何将JSON对象从一个控制器传递到另一个(/ view to view)?

  29. 29

    从一个控制器读取数据到另一个

热门标签

归档