Asp.net身份过期会话Cookie

我们使用MVC 5.2和ASP.NET Identity框架进行身份validation,使用表单身份validation屏幕(用户和密码组合),并使用cookie保留身份。 我在我的启动方法中为Identity框架配置了将身份validationcookie的到期时间设置为30天,当用户选择“记住我”(IsPersistent = true)时,这很好用。 当IsPersistent = false(用户选择不选择’Remember me’)时,默认情况下会创建会话cookie。 此会话cookie在Internet Explorer和FireFox中运行良好,当浏览器关闭时,cookie将丢失。 在Chrome和Safari(也可能是其他浏览器)中,有一些选项可以确保会话cookie不会丢失,在这种情况下,即使浏览器关闭并重新打开,用户也会保持登录状态。 我希望能够确保会话cookie不会永久存在,但会在一小时内丢弃。 我可以通过检查帐户是否在X分钟/小时内没有活动而用户从未选择“记住我”来实现这一点,然后如果时间跨度过去,则用户身份被下一个请求“拒绝”。 有没有人在他们的ASP.NET身份实现中创建了一个解决方案,以确保会话cookie在X时间之后在后端过期,或者是否有更好的方法来解决这个限制? 也许可以使用CookieAuthenticationProvider的自定义实现来执行此操作,或者将过期日期/时间交给用户声明,可以在ValidateIdentity流程中的某处进行检查? 任何想法都会很棒。 提前谢谢你,-Igor 编辑 – 更多信息:我的身份validation实现有2种基本“模式”(目前无法想到更好的词)。 我的实现是一个简单的用户名/密码表单,带有一个“记住我”的复选框。 复选框值传递给AuthenticationProperties对象的IsPersistent属性,该属性传递给AuthenticationManager :: SignIn方法。 用户想要“记住我”,这会创建一个长期存在的cookie,使用滑动过期设置30天。 这使用户能够在浏览器会话之间保持身份validation,并且由于不活动而没有超时,除了不访问该站点超过30天。 我的owin启动方法中的设置反映了cookie的到期时间为30天(CookieAuthenticationOptions.ExpireTimeSpan设置为30天)。 无论浏览器平台如何,这都有效(据我所知)。 用户不想“记住我”,预期的行为应该是创建会话cookie,当浏览器关闭时,会话cookie将从浏览器中删除。 这应该确保下次启动浏览器时用户未经过身份validation。 当像公共计算机一样使用共享设备时,这一点尤为重要。 问题是并非所有浏览器都会删除会话cookie,如果启用了浏览器设置,有些会故意将它们留下(Chrome就是一个很好的例子)。 会话cookie没有到期日期/时间,因此CookieAuthenticationOptions.ExpireTimeSpan在此处没有任何影响。 这是我正在寻找建议的地方,因为我相信我不能成为第一个遇到此问题的人。 可能有一种方法可以使这种行为更安全,因为替代方法是什么也不做,并且可能在浏览器上留下会话cookie(永不过期!)。 有关Chrome和会话Cookie的详细信息,请参阅此链接。

强制回发

有没有办法在代码中强制回发? 我希望强制从我的asp.net Web应用程序后面的c#代码中的方法引发回发。

C#中的每线程内存管理

继续从了解VS2010 C#并行分析结果的讨论,但更重要的是: 我有许多并行工作的线程(使用Parallel.For / Each),它们为小类使用许多内存分配。 这会在全局内存分配器线程上产生争用。 有没有办法指示.NET为每个线程预分配内存池并从该池中进行所有分配? 目前我的解决方案是我自己的内存池实现(全局分配的T类对象数组,它们在线程中循环使用),这有很大帮助,但效率不高,因为: 我不能指示.NET从特定的内存片分配。 我仍然需要多次调用new来为池分配内存。 谢谢, 哈

在XAML中使用boolean到颜色转换器

我正在研究WPF应用程序。我已将文本块绑定到我的按钮。 当关联按钮的isEnabled为true时,我想将文本块的前景设置为黑色。 我想用转换器来做这件事。 但它不起作用 。 也没有给出任何错误。 我在“Models”文件夹中声明了以下类。 public class BrushColorConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if ((bool)value) { { return System.Windows.Media.Colors.Black; } } return System.Windows.Media.Colors.LightGreen; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } Button的启用,可从viewmodel更改属性 (例如,使用RaiseCanExecuteChanged)()) XAML中与textblock相关的东西是: (!..all […]

如何在没有IV的情况下使用AES 128加密和解密?

我目前需要一种方法来加密字符串并使用AES-128对称加密在C#中解密字节数组。 我找不到办法怎么做,但也许我错过了什么。

在C#中访问USB或串口

如何在C#中通过USB发送和接收? 串口和LPT怎么样?

使用xsi:schemaLocation命名空间创建XDocument

我需要创建以下XML,我正在尝试使用XDocument执行此操作。 但是,我在指定名称空间时遇到了问题。 这是我正在寻找的那种代码,但是,我无法在xsi:schemaLocation的名称中使用冒号创建属性。 return new XDocument( new XElement(“AssessmentOrderRequest”, new XAttribute(“xsi:schemaLocation”, XNamespace.Get(“http://ns.hr-xml.org/2007-04-15 http://ns.hr-xml.org/2_5/HR-XML-2_5/StandAlone/AssessmentOrderRequest.xsd”)), new XAttribute(“xmlns”, XNamespace.Get(“http://ns.hr-xml.org/2007-04-15”)), new XAttribute(XNamespace.Xmlns + “xsi”, XNamespace.Get(“http://www.w3.org/2001/XMLSchema-instance”)) ) );

从C#源文件中提取doc注释

有没有人知道任何允许你直接从.cs文件中提取注释到一些简单文本甚至剪贴板的工具? 如果这样的工具也可以在方法级别工作,那就更好了。 我不是在寻找像Sandcastle那样在构建时工作的东西,我正在寻找适用于单个源代码文件的东西。 基本上我需要将一大块方法签名和相关的文档注释复制到文本文件中,但我很无聊删除“///”并重新格式化行。 我希望能够右键单击一个方法并按照“将文档复制到剪贴板”的方式设置上下文菜单项。 有这样的工具吗?

私有字段的命名约定

首先,我知道这个问题之前已被问过几次,最后,这主要是个人偏好的问题,但是阅读关于这个主题的所有主题,有些事情对我来说并不清楚。 基本上,大多数人都同意的一点是,公共成员应该是PascalCased而私人成员应该是低级的.CamelCased。 通常引发争论的问题是是否用私人成员或其他任何东西作为私人成员的前缀。 前缀违反了几个StyleCop规则(显然可以关闭) 不加前缀的基本原理是你应该使用它。 改为加前缀。 我遇到的问题是我不明白它是如何产生影响的? 我的意思是,并不是说你不能在课堂上对公共成员使用这个。 让我们想象一下Customer类,看起来像这样: class Customer { private int age; public int Age { get { return this.age; } set { this.age = value; } } } (显然,在这么简单的情况下,我可以使用autoproperty,但这只是一个例子)。 如果我在这个类中添加了第二个属性,没有什么能阻止我使用this.Age(公共属性)而不是this.age(私有字段)来引用它。 有时候,如果在getter级别应用了一些validation或格式化,它甚至可以被发现。 此外,如果我的类的其他一些属性需要修改客户的Age,那么直接使用属性而不是后备字段是有意义的,因为setter也可以实现一些业务规则validation,对吧? 换句话说,我真的没有看到这个关键字如何避免私人支持成员和公共属性之间的混淆,因为这可以在两者上使用,而IntelliSense显示两者? 谢谢。

是.net系统范围内的垃圾收集器还是应用程序范围内的垃圾收集器?

在与我的同事讨论期间,我怀疑.net中的垃圾收集器是在系统范围内还是在应用程序范围内工作。 意味着每个具有自己的GC的应用程序是否会影响系统性能? 我对此有点困惑。