zoukankan      html  css  js  c++  java
  • .NetCore Session.Redis (转载)

    首先创建ASP.NET CORE Web项目,然后按如下顺序操作。

    1.添加nuget程序包:

    Microsoft.AspNetCore.Session;
    Microsoft.AspNetCore.DataProtection.Redis;
    Microsoft.Extensions.Caching.Redis.Core;
    Microsoft.Extensions.Caching.Redis
    Microsoft.AspNetCore.Http;     //使用Session时有扩展方法

    2.在appsettings.json中添加Redis配置:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "WebConfig": {
        "Redis": {
          "Connection": "127.0.0.1:6379,defaultdatabase=1",
          //"Connection": "127.0.0.1:6379,allowAdmin=true,password=123456,defaultdatabase=5",
          "InstanceName": "Core_Redis_Session_"
        },
        "SessionTimeOut": "30" //session过期时长,分钟
      },
      "AllowedHosts": "*"
    }

    3.在startup.cs类中,按如下例子添加代码:

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    
        /*
            *  Microsoft.AspNetCore.Session;
            *  Microsoft.AspNetCore.DataProtection.Redis;
            *  Microsoft.Extensions.Caching.Redis.Core;
            *  Microsoft.Extensions.Caching.Redis
            *  Microsoft.AspNetCore.Http;     //使用Session时有扩展方法
            */
    
        #region 使用Redis保存Session
        var redisConn = Configuration["WebConfig:Redis:Connection"];
        var redisInstanceName = Configuration["WebConfig:Redis:InstanceName"];
        //Session 过期时长分钟
        var sessionOutTime = Configuration.GetValue<int>("WebConfig:SessionTimeOut", 30);
    
        //var redis = StackExchange.Redis.ConnectionMultiplexer.Connect(redisConn);
        //services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Test-Keys");
        services.AddDistributedRedisCache(option =>
        {
            //redis 连接字符串
            option.Configuration = redisConn;
            //redis 实例名
            option.InstanceName = redisInstanceName;
        }
        );
        #endregion
    
        //添加Session并设置过期时长
        services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(sessionOutTime); });
    
    
    }
    
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseSession();
    
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

    4.在控制器HomeController中添加:

    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            ViewData["UserName"] = this.HttpContext.Session.GetString("UserName");
            ViewData["PassWord"] = this.HttpContext.Session.GetString("PassWord");
            return View();
        }
    
    
        [HttpPost]
        public NoContentResult Add(string userName, string pwd)
        {
            this.HttpContext.Session.SetString("UserName", userName);
    
            this.HttpContext.Session.SetString("PassWord", pwd);
    
            return NoContent();
        }
    }

    5.在View/Index.cshtml添加如下代码:

    <form method="post" action="../Home/Add">
        <div>
            <input name="username" id="username" type="text" value="@ViewData["UserName"]" />
            <input name="pwd" id="pwd" type="password" value="" />
            <input type="submit" value="更新" />
            <h1>提交用户名称为:@ViewData["UserName"]    密码:@ViewData["PassWord"]</h1>
            <a href="javascript:void(0);" onclick="window.location.reload();">刷新显示最新值</a>
        </div>
    </form>

    原文链接

  • 相关阅读:
    微服务迁移记(七):使用docker发布 springcloud应用
    intelliJ IDEA docker部署springboot项目
    docker部署应用时超时解决
    centos下docker安装
    freemarker自定义分页(springboot、bootstrap4)
    微服务迁移记(六):集成jwt保护微服务接口安全
    微服务迁移记(五):WEB层搭建(5)-集成ueditor编辑器,伪分布式图片上传
    微服务迁移记(五):WEB层搭建(4)-简单的权限管理
    微服务迁移记(五):WEB层搭建(3)-FreeMarker集成
    WebView使用input file控件打开相册上传图片
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/10170213.html
Copyright © 2011-2022 走看看