asp.net-core – asp.net核心身份中的多个SubDomain的cookie
| 
                         我有一个网页,它为同一个应用程序使用多个URL: 例如: 因此它将在多个网址上使用子域名.问题是我需要允许用户在他们登录的URL的所有子域上进行身份验证. 例如,如果他们通过www.mywebpage.com.au登录,则需要为* .mywebpage.com.au设置cookie,或者如果他们通过www.yourwebpage.com.au登录,则cookie应为* .yourwebpage.com. AU. 允许ASP.NET核心标识的子域的大多数文档都指向startup.cs(或startup.auth.cs)文件并输入如下内容: app.UseCookieAuthentication(new CookieAuthenticationOptions()
            {
                CookieDomain = "mywebpage.com.au"
            });` 
 这对我不起作用,因为我不想要一个固定的域名,我只想让所有用户都可以访问他们登录的URL的所有子域名.我可以通过请求显然在登录时获取他们的URL,但我需要动态设置cookiedomain. 解决方法我开始时没想到的是Identity和CookeieAuthentication之间的区别.因为我使用的是身份 app.UseIdentity(); app.UseCookieAuthentication不是解决方案. 我终于通过实现ICookieManager找到了我的解决方案. 这是我的解决方案: 在Startup.cs中: services.AddIdentity<ApplicationUser,IdentityRole>(options =>
        {
            options.Password.RequireDigit = false;
            options.Password.RequiredLength = 5;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireLowercase = false;
            options.Password.RequireUppercase = false;
            options.Cookies.ApplicationCookie.CookieManager = new CookieManager(); //Magic happens here
        }).AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders(); 
 现在我在一个叫做CookieManager.cs的类中: public class CookieManager : ICookieManager
{
    #region Private Members
    private readonly ICookieManager ConcreteManager;
    #endregion
    #region Prvate Methods
    private string RemoveSubdomain(string host)
    {
        var splitHostname = host.Split('.');
        //if not localhost
        if (splitHostname.Length > 1)
        {
            return string.Join(".",splitHostname.Skip(1));
        }
        else
        {
            return host;
        }
    }
    #endregion
    #region Public Methods
    public CookieManager()
    {
        ConcreteManager = new ChunkingCookieManager();
    }
    public void AppendResponseCookie(HttpContext context,string key,string value,CookieOptions options)
    {
        options.Domain = RemoveSubdomain(context.Request.Host.Host);  //Set the Cookie Domain using the request from host
        ConcreteManager.AppendResponseCookie(context,key,value,options);
    }
    public void DeleteCookie(HttpContext context,CookieOptions options)
    {
        ConcreteManager.DeleteCookie(context,options);
    }
    public string GetRequestCookie(HttpContext context,string key)
    {
        return ConcreteManager.GetRequestCookie(context,key);
    }
    #endregion                        (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
- asp.net实现生成缩略图及给原始图加水印的方法示例
 - asp.net-mvc – 使用没有ORM的ASP.NET MVC
 - ASP.NET Web API,Web服务发现和客户端创建
 - asp.net – 当绑定值包含冒号时,如何绑定GridView HyperLin
 - asp.net-mvc – MVC4区域和表单认证
 - asp.net repeater手写分页实例代码
 - asp.net-mvc – 在ASP.NET MVC中的LinkButton
 - asp.net-mvc – 带有asp.net mvc 4和EntityFramework的View
 - asp.net-mvc – 在我的ASP.NET MVC网站中缓存不能正常工作?
 - ASP.NET两个截取字符串的方法分享
 
- asp.net – 从DropdownList SelectedItem获取属性
 - asp.net-mvc – ASP.NET MVC中的WebApi [FromUri
 - asp.net-mvc-3 – MVC 3 $.ajax – 响应似乎是从
 - ASP.NET批量下载文件的方法
 - 如何在Asp.Net Mvc中进行Basecamp风格的账户?
 - asp.net-mvc-3 – “字段宽度必须是数字.”在客户
 - asp.net-mvc-4 – 在asp.net mvc 4模型中更改验证
 - asp.net-mvc – MVC 5:Asp.net身份:如何建模Us
 - asp.net-web-api – 从ASP.NET Web API ASP.NET
 - ASP.NET /数据库性能清单
 
