asp.net-identity – 为什么一个站点的ASP.NET身份登录可以在同一台机器上与不同的网站共享?
|
我创建一个全新的Web应用程序说“WebApplication1” – WebForms与身份验证设置为个人用户帐户。我不会在自动生成的代码模板中添加一行代码。我运行应用程序并注册一个用户“User1”并登录 – 工作正常。 现在我创建另一个Web应用程序“WebApplication2” – 与设置为个人用户帐户的身份验证相同的WebForms。再次没有代码,我运行应用程序。现在我创建另一个用户说“User2” – 工作正常。 当两个应用程序同时运行时,问题开始。 Context.User.Identity是如何被共享的? 代码是一样的 – public static void SignIn(UserManager manager,ApplicationUser user,bool isPersistent){
IAuthenticationManager authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = manager.CreateIdentity(user,DefaultAuthenticationTypes.ApplicationCookie);
authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent },identity);
}
我确实缺少关于ASP.Net Identity如何工作的一些基本知识,请帮助我。 提前致谢。 解决方法如果您的服务器配置为使用Cookie身份验证,则服务器将向浏览器返回Cookie,其中包含有关用户的加密和签名的声明。该cookie默认名为:.AspNet.ApplicationCookie。 此Cookie将存储在您的浏览器中,直到它过期(默认14天并滑动到期),或者您明确退出删除该cookie。 如果您打开另一个浏览器类型的选项卡或窗口,则在登录后,它也将具有相同的cookie,并在将请求发送到您的两个网站时传递。 如果两个站点被配置为查找相同的cookie名称,他们将看到它们,并且能够在认证cookie共享相同的机器时解密认证cookie,并且因此能够由服务器用于加密/解密并签名的机器密钥曲奇饼。 Cookie中没有任何内容属于同一服务器中的哪个站点,因此存储在WebApplication1网站中的“User1”声明将被视为在WebApplication2上进行身份验证。 如果您在两个Web应用程序中设置了不同的CookieName,则它们将不会使用相同的身份验证cookie,因此在一个站点中进行身份验证的用户将不会在另一个站点上进行身份验证。 您可以在Startup.Auth.cs中设置CookieName,如下所示: public partial class Startup
{
// For more information on configuring authentication,please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,LoginPath = new PathString("/Account/Login"),CookieName = "MyCookieName",});
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET中的BackgroundWorker线程
- asp.net – Azure网站上脚本/样式的长时间等待(TTFB)时间
- 模型 – 视图 – 控制器 – ASP.NET MVC:使用SendAsync发送
- asp.net – 用户控件的属性在回发后失去价值
- asp.net-mvc – 如何使用带有IEnumerable的Html.CheckBox(l
- Asp.net Images随机提供401个未经授权的错误
- asp.net-mvc – DataAnnotations动态附加属性
- 远程服务器返回错误:(401)未经授权.在ASP.NET中使用CSOM
- asp.net-mvc – 在ASP.NET MVC中以HTML格式呈现RDLC报告
- asp.net-mvc – 如何访问querystring在ASP.Net MVC视图
- 为什么我需要在ASP.NET控件上调用处理?
- asp.net-mvc-4 – 如何在MVC 4中创建自定义WebSe
- asp.net – 当你不能使用ViewState时你会怎么做?
- asp.net-mvc – 尝试创建类型为’TypeNewsContro
- asp.net-mvc-4 – MVC4和MVCContrib
- asp.net – app_offline替代方案
- asp.net-mvc-4 – 在控制器的新窗口中打开mvc视图
- asp.net – 单元测试和Log4net
- asp.net-mvc – 可以更改Html.DropDownListFor生
- asp.net-mvc-3 – Ninject和OnePerRequestModule
