使用asp.net登录控件的部分站点SSL
时间:2020-03-06 14:23:10 来源:igfitidea点击:
我正在尝试将本地登录系统转换为.net中包含的标准asp.net登录控件。我希望未登录用户在网站上的所有通信均采用明文形式,但一旦用户登录(包括用户名和密码的传输),就将所有内容锁定为SSL。
我通过加载第二个带有https:前缀的页面" loginaction.aspx",然后通过在Request.Form.Keys中查找适当的文本框控件来提取用户名和密码来完成此工作。是否可以使用.net登录控件执行类似的操作?我不想有单独的登录页面,而是在站点的每个页面上都包含此控件(在loginview中)。
解决方案
我们将无法将站点设置为非SSL,并且在每个页面上都有一个登录框,然后通过SSL提交用户名和密码。
真正做到这一点的唯一方法是使用某种框架。这样,整个页面可以是非SSL的,但是登录框架必须是SSL。
这样做的通常方法是使用SSL锁定整个站点,不用担心对用户名和密码SSL进行加密并在登录后使用SSL,或者使用我上面提到的框架路由。
我们将无法简单地执行我们在说的事情,因为回发(登录控件使用的内容)将与页面的安全性(SSL或者非SSL)无关。
在这种情况下,最好的选择是使用一个IFRAME,该IFRAME包含一个HTTPS(SSL)页面,该页面仅包含登录控件。登录后,我们可能必须重定向到另一个页面,该页面使我们可以跳出IFRAME。
计划B将在页面上(在主表单之外)有一个单独的表单,该表单的ACTION属性指向我们处理登录的另一页。我们将必须输入自己的登录代码来处理表单身份验证。
我可以通过将OnClientClick事件添加到登录按钮控件并将其设置为以下javascript函数来实现此目的。
`
function forceSSLSubmit() { var strAction = document.forms[0].action.toString(); if (strAction.toLowerCase().indexOf("http:") == 0) { strAction = "https" + strAction.substring(4); document.forms[0].action = strAction; } }
`