加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Web.HttpContext.Current.User.Identity.Name来自哪

发布时间:2020-12-16 06:56:10 所属栏目:asp.Net 来源:网络整理
导读:我有 FormsAuthentication.SetAuthCookie("someName",True) 作为我的自定义登录序列的一部分.后来,我有一些页面只允许一个特定的角色: location path="myPage.aspx" system.web authorization allow roles="SomeRole"/ deny users="*"/ /authorization /sys
我有

FormsAuthentication.SetAuthCookie("someName",True)

作为我的自定义登录序列的一部分.后来,我有一些页面只允许一个特定的角色:

<location path="myPage.aspx">
    <system.web>
        <authorization>
            <allow roles="SomeRole"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

据我所知,这会调用我的角色提供程序的GetRolesForUser实现.它似乎从Web.HttpContext.Current.User.Identity.Name获取用户名参数.

我的问题是……来自auth cookie的用户名何时被设置为我当前用户身份中的名称?

解决方法

用户名只是IPrinciple用户对象的一个??属性,该对象在一个标准ASP.NET HTTPModules中设置,在您的情况下可能是System.Web.Security.FormsAuthenticationModule,作为OnAuthenticate方法的一部分.

如果您想知道如何更改此信息(例如设置不同的用户名或标识),您将需要查看创建global.asax或覆盖Application_AuthenticateRequest的自定义HTTPModule.这是一个例子:

Public Sub Application_AuthenticateRequest(ByVal sender As Object,ByVal e As System.EventArgs)
    Dim cookieName As String = FormsAuthentication.FormsCookieName
    Dim authCookie As HttpCookie = HttpContext.Current.Request.Cookies(FormsAuthentication.FormsCookieName)

    If Not IsNothing(authCookie) Then
        Dim authTicket As FormsAuthenticationTicket = FormsAuthentication.Decrypt(authCookie.Value)
        If IsNothing(authTicket) OrElse authTicket.Expired Then
            HttpContext.Current.Response.Redirect(FormsAuthentication.LoginUrl)
        Else
            Dim id As New FormsIdentity(authTicket)

            Dim newUser As New YourCustomUserType(id.Name)
            HttpContext.Current.User = newUser
        End If
    End If
End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读