取名字真难null 2015-08-20 03:45 采纳率: 0%
浏览 1487

asp.net FormsAuthentication认证

两个网站发布在同一个服务器,用的端口不一样,都是用from认证登录。
如果同时打开两个网站登录,会有一个网站cookie失效,需要重新登录。
重新登录后,另一个网站的cookie也会失效,新登录的会保存下来。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 06:12
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,你需要确保在ASP.NET中正确地配置Forms Authentication,并使用正确的Cookies。以下是一个基本的解决方案:

    1. 首先,在你的Web.config文件中添加以下内容来启用Forms Authentication:
    <authentication mode="Forms">
        <forms loginUrl="~/Account/Login" timeout="60" />
    </authentication>
    
    1. Account/LogIn.cshtmlAccount/LogOut.cshtml视图中设置适当的登录和注销URL。
    2. 在你希望登录的页面上,你应该使用FormsAuthentication.SignOut()方法来清空Cookie并重定向到新的登录页面。例如,在Account/Login.cshtml视图中的<form>标签中添加以下代码:
    <button type="submit" class="btn btn-primary">Login</button>
    
    <script>
        window.onload = function () {
            var form = document.forms["loginForm"];
            var usernameInput = form.elements["username"];
            var passwordInput = form.elements["password"];
    
            if (usernameInput.value && passwordInput.value) {
                // 登录
                usernameInput.value = "";
                passwordInput.value = "";
    
                FormsAuthentication.SignOut();
                window.location.href = "http://www.example.com/login";
            }
        };
    </script>
    
    1. 在用户成功登录后,你可以将用户的ID或其他身份验证信息存储在一个数据库表中,以便在后续请求中可以自动登录用户。例如,你可以创建一个名为User的数据库表,并在其中添加一个字段UserID来存储用户名。

    通过以上步骤,你应该能够有效地防止用户在不同的站点之间重复登录。

    评论

报告相同问题?