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 Core 2.0中Razor页面禁用防伪令牌验证
- NHibernate中关于Inverse的理解和使用
- asp.net – 在IHTTPHandler中以编程方式创建System.Web.UI.
- asp.net – 在web.config文件中设置重定向
- asp.net – 是否可以根据用户角色隐藏/显示Kendo网格列?
- ASP.NET VNext类库System.Runtime.Serialization
- asp.net – web部署工具2.1和web部署3.5有什么区别?哪一个
- Jquery 组合form元素为json格式,asp.net反序列化
- asp.net – 从单独的配置文件中读取设置
- asp.net – 我们可以在视图状态中放置哪些类型的对象?
- asp.net-mvc – Url.Action生成查询字符串,以任何
- asp.net – 防止TextBox中的特殊字符
- asp.net – Intranet / Internet的Windows身份验
- ASP.NET MVC4安全性,身份验证和授权
- .net4.0中的ClientIDMode
- 看美剧英文字幕学英语的利器深蓝英文字幕助手简介
- 模型绑定 – WebApi2:自定义参数绑定以绑定部分
- asp.net – Orchard CMS和Sitefinity CMS
- asp.net-mvc-4 – 在EF迁移配置类的Seed方法中获
- asp.net-mvc – asp.net MVC应该是View-Model封装