我有一个经典的 ASP 应用程序,多个用户从几个不同的物理商店位置登录。当然,它们都访问相同的数据库和 Web 服务器。但我想知道用户从哪个位置登录。我想过也许读取本地计算机名称,但出于安全原因,我读到这不是一个好方法。有没有办法可以确定用户从哪台物理计算机登录到应用程序? (用户在公司内使用 Edge 和 Chrome 浏览器,并且商店彼此相距一英里以内。)
我想要做的是过滤一组仅在用户从特定物理商店位置登录时与应用程序相关的选项。问题是用户可以在任何给定的工作日在任何商店工作。所以,我想我必须找到一些东西来识别他们登录的物理计算机。
提前感谢您的帮助!
根据评论更新
您需要用户使用用户ID和商店名称登录服务器。
将其保存在会话中,如果他们在其他位置或计算机上登录(即该计算机上没有会话),则将其注销。
旧答案
由于您可以控制用户,最快的方法是确定存储的公共 IP 地址是否具有固定的公共 IP 地址,或者如果不固定,则每个存储都具有已知的 IP 地址范围。
如果是这样,您可以在服务器上通过 IP 地址(范围)通过如下代码测试商店
<%
Dim clientIPAddress
clientIPAddress = Request.ServerVariables("REMOTE_ADDR")
Response.Write("Client IP Address: " & clientIPAddress)
%>
例如,它可能看起来像这样(192.168是内部IP地址,如果它们来自互联网,您将看到其他地址)
<%
Dim userIP, storeLocation
userIP = Request.ServerVariables("REMOTE_ADDR")
' Example IP addresses for different stores
Dim store1IP, store2IP
store1IP = "192.168.1.1" ' Replace with actual store 1 IP address
store2IP = "192.168.1.2" ' Replace with actual store 2 IP address
' Check which store the user is from
Select Case userIP
Case store1IP
storeLocation = "Store 1"
Case store2IP
storeLocation = "Store 2"
Case Else
storeLocation = "Unknown"
End Select
' Output or use the store location
Response.Write("User is from: " & storeLocation)
' Further logic based on storeLocation
If storeLocation = "Store 1" Then
' Logic specific to Store 1
ElseIf storeLocation = "Store 2" Then
' Logic specific to Store 2
Else
' Default logic or error handling
End If
%>