zoukankan      html  css  js  c++  java
  • Asp.net Core中使用Session

    Asp.net Core验证码登录遇到两个小问题

    第一是在Asp.net Core中引用dll,以往我们引用DLL都是直接引用,在Core里这样是不行的,必须基于NuGet添加,或者基于project.json添加,然后保存VS会启动还原类库。

    第二就是使用Session的问题,Core里使用Session需要添加Session类库。

    第一步:在你的项目上基于NuGet添加:

    install-package  Microsoft.AspNetCore.Session -ver 2.0

    install-package Microsoft.AspNetCore.Http.Extensions -ver 2.0

    第二步:修改startup.cs

     在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session(这个地方是Asp.net Core pipeline):

      services.AddSession();

     接下来我们要告诉Asp.net Core使用内存存储Session数据,在Configure(IApplicationBuilder app,...)方法中添加代码:

      app.UseSession();

    第三步 session的使用

    1、在MVC Controller里使用HttpContext.Session

    using Microsoft.AspNetCore.Http;

    public class HomeController:Controller
    {
    public IActionResult Index()
    {
    HttpContext.Session.SetString("code","123456");
    return View();
    }

    public IActionResult About()
    {
    ViewBag.Code=HttpContext.Session.GetString("code");
    return View();
    }
    }

    2、如果不是在Controller里,你可以注入IHttpContextAccessor

    public class SessionAppService

    {

    private IHttpContextAccessor _httpContextAccessor;
    private ISession Session => _httpContextAccessor.HttpContext.Session;
    public SessionAppService(IHttpContextAccessor httpContextAccessor)
    {
    _httpContextAccessor = httpContextAccessor;
    }

      public void Set()
         {
              _session.SetString("code","123456");
         }
        
         public void Get()
        {
             string code = _session.GetString("code");
         }
    

    }

    3、Isession的扩展 存储复杂对象

    public static class SessionExtensions
    {
          public static void SetObjectAsJson(this ISession session, string key, object value)
        {
            session.SetString(key, JsonConvert.SerializeObject(value));
        }
    
        public static T GetObjectFromJson<T>(this ISession session, string key)
        {
            var value = session.GetString(key);
    
            return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
        }
    }
    使用范例
    var myComplexObject = new MyClass();
    HttpContext.Session.SetObjectAsJson("Test", myComplexObject);
    
    
    var myComplexObject = HttpContext.Session.GetObjectFromJson<MyClass>("Test");
  • 相关阅读:
    会计期间勿关闭后台打开
    动态创建VIEW
    约束变量
    JS 图片懒加载
    如何在Javascript中对数组的遍历使用异步函数
    JavaScript之闭包
    面试:数组去重你会几种呀?
    JavaScript重构技巧-降低函数复杂度
    JavaScript的内置对象
    js/jQuery获取data-*属性值
  • 原文地址:https://www.cnblogs.com/cb521413/p/9039688.html
Copyright © 2011-2022 走看看