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

asp.net FormsAuthentication认证
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 你知我知皆知 2024-08-04 06:12关注
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
要解决这个问题,你需要确保在ASP.NET中正确地配置Forms Authentication,并使用正确的Cookies。以下是一个基本的解决方案:
- 首先,在你的Web.config文件中添加以下内容来启用Forms Authentication:
<authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="60" /> </authentication>
- 在
Account/LogIn.cshtml
或Account/LogOut.cshtml
视图中设置适当的登录和注销URL。 - 在你希望登录的页面上,你应该使用
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>
- 在用户成功登录后,你可以将用户的ID或其他身份验证信息存储在一个数据库表中,以便在后续请求中可以自动登录用户。例如,你可以创建一个名为
User
的数据库表,并在其中添加一个字段UserID
来存储用户名。
通过以上步骤,你应该能够有效地防止用户在不同的站点之间重复登录。
解决 无用评论 打赏 举报