【问题标题】:Form with a list of files, secured with password带有文件列表的表格,用密码保护
【发布时间】:2019-05-15 08:58:31
【问题描述】:

我想在我的网页上创建一个包含文件的下拉菜单。用户需要输入密码才能查看这些文件。它不需要加密。我该怎么做呢

like this,但用户需要输入密码才能查看此文件。

<div class="toggler">Ostalo</div>
<div class="element">
  <%                    
    info = new DirectoryInfo("\\Ostalo\something");
    files = info.GetFiles().OrderByDescending(p => p.CreationTime).ToArray();

    foreach (FileInfo dat in files) {
      var test=dat;
      if(test.ToString() != "Thumbs.db"){
  %>
  <li class="seznam_razmak"><a  href="/Doc/<%=dat%>" class="link1" target="_blank">&nbsp&nbsp<%=dat%></a></li>

  <%
  }}%>
</div>

我如何用密码保护它

【问题讨论】:

  • 有一个正常的登录系统,如果登录,显示文件的能力。
  • 你是说需要输入密码才能显示文件列表?
  • 您需要重新考虑您的设计。将 C# 代码倒入 ASP 页面的 div 元素以要求输入密码并不是好的设计。
  • 没错。同意@KobyDouek。可以从浏览器的控制台轻松访问文件列表。不知道你要使用什么模式,但我想说,在控制器中编写一个带有授权属性的 API,通过检查密码来查看用户是否有效,然后使用 AjaxResult 将文件列表返回到前端。
  • @patriot16 如果您不关心设计,那么您自己处理这个可怜的选择,当您明显不了解时,我认为您无法在这里获得帮助基础知识。

标签: c# asp.net .net


【解决方案1】:

创建一个文本输入并将值与您的密码进行比较:

&lt;asp:TextBox ID="txtPassword" TextMode="Password" runat="server" /&gt;

添加一个按钮提交导致页面重新加载,因为服务器端更改只有在往返服务器后才会生效:

&lt;asp:Button ID="btnSubmit" Text="Submit" runat="server" /&gt;

并将您的输出代码包装在条件中:

<div class="element">
  <%
    if (txtPassword.Text == "password") {
      ...
    }
  %>
</div>

【讨论】:

  • 您正在鼓励 OP 进行非常非常糟糕的做法。未来的 SO 访问者将使用此代码。如果他写“我不关心设计”,则无需回答 OP。
  • 如果一个需求像陈述的那样简单,为什么要把事情复杂化呢?您想使用 Model-View-Controller 设置来检查密码吗?简单的问题也可以有简单的答案。
  • @Willem 谢谢你这对我来说很完美,我知道这不是最安全的选择。
  • 很抱歉,它不仅“不是最安全的选择”,而且实际上是“最不安全的设计”。
  • 您是否以纯文本形式存储密码?这是一个糟糕的主意。
猜你喜欢
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 2015-09-30
  • 2018-05-15
  • 2011-01-09
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多