首页 > 解决方案 > 在 VB .NET 中记录访问控制日志

问题描述

我是 VB .NET 的新手,我想编写一个方法,每次有人尝试登录时都将新条目保存到数据库中,无论尝试成功还是失败。我还需要捕获执行尝试的机器的 IP 地址。关于从哪里开始的任何建议

标签: asp.net-mvcvb.netloggingloginaccess-control

解决方案


I dont believe capturing ip can be done locally without a library for it, but if you dont mind an api call you can use ip-api.com

'Query location data
Dim Req As HttpWebRequest
Dim Ret As HttpWebResponse = Nothing
Dim SR As StreamReader
Req = DirectCast(WebRequest.Create("http://ip-api.com/json"), HttpWebRequest)
Ret = DirectCast(Req.GetResponse(), HttpWebResponse)
SR = New StreamReader(Ret.GetResponseStream())
Dim Raw As String = Nothing
Raw = SR.ReadToEnd()
Dim JavaScriptSerialization As New JavaScriptSerializer()
Dim ipdata_object As New IPData()

ipdata_object = JavaScriptSerialization.Deserialize(Raw, ipdata_object.GetType)
dim ip_address as string = ipdata_object.query.tostring()

IPData Class

'IP Data API Deserialization classes for http://ip-api.com/json API response
<Serializable>
Class IPData
    Public asinfo As String
    Public city As String
    Public country As String
    Public countryCode As String
    Public isp As String
    Public lat As String
    Public lon As String
    Public org As String
    Public query As String
    Public region As String
    Public regionName As String
    Public status As String
    Public timezone As String
    Public zip As String
End Class

As for logging, depending on what you want to use, Mysql, CSV, Flatfile, etc

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'SAVE FUNCTION
    Dim LogString as String = "User " + Username + " Attempted to login from " + ip_address + " Successfully/Failed"

    My.Computer.FileSystem.WriteAllText("C://testfile.txt", inputString, True)
End Sub

推荐阅读