【问题标题】:Is it safe to use a Shared property for authentication verification?使用共享属性进行身份验证是否安全?
【发布时间】:2013-04-01 10:59:46
【问题描述】:

我应该使用Shared,还是只使用Public 函数并在需要时启动一个类?我已经阅读了许多文章,但仍然无法理解这里的最佳选择。

这是我想要获取的代码。有问题的userid 是用户登录时设置的字符串。由于我可能需要在多个页面中使用用户标识,因此我想将其添加到一个类中。

Public Shared ReadOnly Property userid As String
    Get
        Dim ck As HttpCookie = HttpContext.Current.Request.Cookies(FormsAuthentication.FormsCookieName)
        Dim tkt As FormsAuthenticationTicket = FormsAuthentication.Decrypt(ck.Value)
        Return tkt.Name
    End Get
End Property

【问题讨论】:

  • 关键是调用操作的上下文。在这种情况下,属性从会话值中读取,因此可以正常工作。情况并非总是如此。看看我几年前问的这个问题:stackoverflow.com/questions/4026785/…

标签: asp.net vb.net function shared public


【解决方案1】:

我几乎永远不会说您在处理身份验证时应该利用Shared 成员 - 但由于您使用的是Cookies,我看不出任何原因该代码不能按原样工作并使其更容易访问。

【讨论】:

    【解决方案2】:

    这是完全可以接受的。你可以在很多开源项目中看到在静态方法中访问HttpContext.Current

    仅供参考: HttpContext.Current 必须在当前调用线程上,因此请确保检查 HttpContext.Current 不为空。

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2013-05-09
      相关资源
      最近更新 更多