我们有两个ASP.NET MVC项目都使用ASP.NET Identity,我们需要将它们合并到一个项目中。我们有一个包含两个项目的解决方案,它们都使用相同的数据库来获取登录信息和相同的UserStore等。我们需要能够从一个项目的控制器重定向到另一个项目的视图并登录凭证在两个项目之间都存在。我们已经将解决方案设置为在调试时同时启动两个项目,并且它们都正确加载,但是两者之间的登录不会持续存在,并且我们无法从一个视图跳转到另一个视图。这是完全可能还是我们最好将这两个项目合并为一个项目?
答案 0 :(得分:1)
一般来说,我会说,是的,你最好将两个项目合并为一个,但你不一定要这样做。在项目之间共享auth需要两件事:
项目必须位于同一主域。它们可以位于子域,即project1.domain.com和project2.domain.com,但它们不能位于完全不同的域上,即project1.com和project2.com。
如果它们位于子域中,则需要使用通配符cookie。在Startup.Auth.cs中找到该行:
app.UseCookieAuthentication(new CookieAuthenticationOptions {
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
...
});
您可以初始化CookieAuthenticationOptions
的其中一个属性是CookieDomain
。将其设置为".yourdomain.com"
。
他们必须在Web.config中设置相同的机器密钥。请参阅:https://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs.100).aspx