Por ejemplo te creas una variable de sesion llamada Session("Usuario") donde metas el nombre del usuario cuando haga un login correcto. Asi:
If login(usuario, pass) then Session("Usuario") = usuario
Luego cada vez que cargas una pagina privada compruebas si esa variable es valida*, es decir tiene algun valor. Esto en el page load de las paginas privadas
If not session("Usuario") is nothing and session("Usuario") <> "" then
'Continuas la ejecucion
Cuando el usuario salga y cargue una pagina publica haces esto:
session("Usuario") = "" o session("Usuario")=nothing (lo que mas te guste)
*Si la sesion caduca con el tiempo has de crearte una clase que te controle eso, yo tengo este procedimiento:
Public Overridable Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
'checking if session is still active
Response.AddHeader("Refresh", ((Session.Timeout * 60) + 5).ToString)
If (Session("User") Is Nothing) Or (Session("User") = "") Then
Response.Redirect("~/Login/LoginError.aspx?ErrorCode=1")
End If
End Sub
Lo vi
aqui y lo explica todo muy bien
Espero que te ayude.
Saludos