asp.net-core-mvc – 如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?

前端之家收集整理的这篇文章主要介绍了asp.net-core-mvc – 如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在将一个Web表单应用程序转换为asp.net core mvc.在我的Web表单应用程序中,有时在我设置一些响应cookie后,其他代码需要查看它们是否已设置,如果是,请访问cookie的属性(即value,Expires,Secure,http).在webforms和MVC 5中,可以迭代cookie并返回任何特定的cookie,如此(我知道的老学校)
  1. for(int i = 0; i < cookies.Count; i++) {
  2. if(cookies[i].Name == cookieName) {
  3. return cookies[i];
  4. }
  5. }

但是在asp.net core mvc中访问响应cookie的界面如下所示:

基于此接口,我没有看到检查响应cookie是否存在并获取属性方法.但是还有一些方法可以做到吗?

在一个动作方法中,我尝试在响应对象上设置两个cookie,然后立即尝试访问它们.但intellisense没有显示允许我访问它们的任何方法,属性或索引器:

有一会儿,我想也许我可以使用Response.Cookies.ToString();并且只是解析信息以找到我的cookie信息,但是,ToString()调用返回“Microsoft.AspNet.Http.Internal.ResponseCookies”,因为该对象不会覆盖默认实现.

只是为了好玩,我还检查了GitHub的当前dev分支,看看自RC1以来接口是否已经改变,但它没有.所以给定这个接口,我如何检查响应cookie的存在并获取它的属性?我曾经考虑过通过响应头集合进行攻击,但这看起来很蹩脚.

解决方法

这是我如何从Response中获取cookie的值.如果需要,这样的东西可用于获取整个cookie:
  1. string GetCookieValueFromResponse(HttpResponse response,string cookieName)
  2. {
  3. foreach (var headers in response.Headers.Values)
  4. foreach (var header in headers)
  5. if (header.StartsWith($"{cookieName}="))
  6. {
  7. var p1 = header.IndexOf('=');
  8. var p2 = header.IndexOf(';');
  9. return header.Substring(p1 + 1,p2 - p1 - 1);
  10. }
  11. return null;
  12. }

猜你在找的.NET Core相关文章