簡體   English   中英

將FormsAuthentication cookie轉換為字符串以在公共共享變量中使用

[英]Converting FormsAuthentication cookie to string for use in public shared variable

我試圖從AuthCookie中獲取用戶名,以用於控制其他變量。 Cookie在此處的索引中定義:

<HttpPost()> _
Public Function Index(model As users.LogOnModel) As ActionResult
    'call LogOnModel
    '--------------------------
    If ModelState.IsValid Then

        'check username and password
        If model.pwd = db.users.First(Function(t) t.NT_id = model.NT_id).pwd Then

            'create an authentication cookie
            FormsAuthentication.SetAuthCookie(model.NT_id, False) 'set to false to destroy cookie on browser close

            'redirect action if login is successful
            Return RedirectToAction("Construction", "Home")
        Else
            ModelState.AddModelError("", "Invalid Username or Password")
        End If
    End If
    Return View(model)
End Function

我正在嘗試在此處的變量中聲明它以用於控制其他變量:

' User variables
    '---------------------------
    Public Shared uNT_id = IF(HttpContext.Current.User.Identity.Name is nothing, System.Environment.UserName, Trycast(HttpContext.Current.User.Identity.Name, String))


    Public Shared uid = db_apps.app_users.First(Function(t) t.NT_id = uNT_id).app_user_id
    Public Shared ussn = db_apps.app_users.First(Function(t) t.NT_id = uNT_id).ssn
    Public Shared upwd = db_apps.app_users.First(Function(t) t.NT_id = uNT_id).pwd
    Public Shared uname_first = db_apps.app_users.First(Function(t) t.NT_id = uNT_id).name_first

    ' App variables
    '---------------------------
    Public Shared appcount = db_apps.app_users.Count(Function(t) t.NT_id = uNT_id)
    Public Shared Function appid_multiple() As String
        Dim appidQ = From v In db_apps.app_users
                     Where v.NT_id = uNT_id
                     Select v

        'Create a String representation
        Dim stringList As New System.Text.StringBuilder
        Dim counter As Integer = 0
        For Each v In appidQ
            stringList.Append(v.app_id.ToString())

            'Separator
            If Not counter = appidQ.Count - 1 Then
                stringList.Append(",")
            End If
            counter += 1
        Next
        Return stringList.ToString
    End Function
    Public Shared appid = db_apps.app_users.First(Function(t) t.NT_id = uNT_id).app_id

最終結果是uNT_id需要等於他們登錄網站所使用的用戶名,或者與其登錄到那里的計算機所使用的用戶名相等,例如我的用戶名應為:

uNT_id =“ z148658”

然后我將使用uNT_id來控制所有其他變量。

以下代碼返回我嘗試返回的字符串

Public Shared uNT_id = If(HttpContext.Current.User.Identity.IsAuthenticated, HttpContext.Current.User.Identity.Name, System.Environment.UserName)

但是,如果用戶登錄並終止要殺死Cookie的窗口,則HttpContext.Current.User.Identity.Name仍然等同於最后登錄的用戶。如果新用戶嘗試登錄,則同樣適用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM