我正在尝试将本地登录系统转换为 .net 中包含的标准 asp.net 登录控件。我希望未登录用户在网站上的所有通信都采用明文形式,但一旦用户登录,就将所有内容锁定在 SSL 中 - 包括用户名和密码的传输。

我之前通过加载第二个页面 - “loginaction.aspx” - 使用 https 来完成此工作:前缀,然后通过在 Request.Form.Keys 中查找正确的文本框控件来提取用户名和密码。有没有办法使用 .net 登录控件执行类似的操作?我不想有一个单独的登录页面,而是在网站的每个页面上包含此控件(在登录视图内)。

有帮助吗?

解决方案

您将无法简单地执行您正在谈论的操作,因为回发(登录控件使用的内容)将取决于页面的安全性(SSL 或非 SSL)。

在这种情况下,最好的选择是使用 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;
                }

        }

`

您将无法将您的网站设置为非 SSL,每个页面上都有一个登录框,然后通过 SSL 提交用户名和密码。

真正实现这一目标的唯一方法是使用某种框架。这样您的整个页面可以是非 SSL 的,但登录框架必须是 SSL 的。

通常的方法是使用 SSL 锁定整个站点,不用担心用户名和密码被 SSL 加密,并在登录后转到 SSL,或者采用我上面提到的帧路由。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top