zoukankan      html  css  js  c++  java
  • HttpContext.Current.User is null after installing .NET Framework 4.5

    故障原因:从framework4.0到framework4.5的升级过程中,原有的form认证方式发生了变化,所以不再支持User.Identity.Name原有存储模式(基于cookie),要恢复这个功能,我也是偶然间发现的。
    一下五种解决方案根据具体情况供参考
    1、降级处理,把你的framework降到4.0
    <compilation debug="true " targetFramework=" 4.0" />
        < httpRuntime targetFramework ="4.0" />
     
    2、set the Current User myself in the Global.asax:(不用降级只需加上这段代码)
     private void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
        HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
        if (cookie != null)
        {
            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
            HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(new FormsIdentity(ticket), new string[0]);
        }
    }
     3、 <machineKey validationKey="12..." decryptionKey="34..." 
                    validation="SHA1" decryption="AES"
                    compatibilityMode="Framework20SP1" />
    4、SessionAuthenticationModule

    Since you're in 4.5 and since you're manually issuing the cookie and since you're already intercepting the cookie, then you're not really using the forms auth HTTP module at all. I'd remove that for now. Also, change your module to handle AuthenticateRequest. See how that works.

    Then once you do get it working, I'd scrap it all in favor of claims and using the SessionAuthenticationModule which is new and built into 4.5. It is far simpler and will serialize all of your roles into a cookie for you.

    http://msdn.microsoft.com/zh-cn/library/system.identitymodel.services.sessionauthenticationmodule(v=vs.110).aspx

    5

    Make sure that the machineKey compatibility mode is the same between all applications:
    <machineKey compatibilityMode="Framework20SP1" />

    (The above is the default for 2.0 / 4.0 applications but is not the default for 4.5 applications, so it will have to be set explictly in the 4.5 application.) 

  • 相关阅读:
    Nginx配置中一个不起眼字符"/"的巨大作用
    Logstash:多个配置文件(conf)
    2019年末Powershell 挖矿病毒的处理与防范
    2021年复习内容包括
    WPF 中双向绑定通知机制之ObservableCollection
    VB里Property用于标识一个类成员为属性而不是方法。
    KubeOperator
    页面布局-Grid,StackPanel,DockPanel,WrapPanel
    HTML-框架目录
    分析一段XAML语言代码
  • 原文地址:https://www.cnblogs.com/xiaoweizi/p/3848076.html
Copyright © 2011-2022 走看看