当前位置: 首页 > news >正文

电子商务的网站的建设内容西安自动seo

电子商务的网站的建设内容,西安自动seo,自己做的网站验证码出不来怎么,怎样做中考成绩查询网站目录 多台服务器sessionId共享解决方案:ASP.NET Core 参考代码(NET 7):登录处理登录(请求)过滤器过滤器使用BaseController 多台服务器sessionId共享 session id是服务器首次与浏览器创建连接时,生成的id值,存入浏览器…

目录

  • 多台服务器sessionId共享
    • 解决方案:
    • ASP.NET Core 参考代码(NET 7):
        • 登录处理
        • 登录(请求)过滤器
        • 过滤器使用
        • BaseController

多台服务器sessionId共享

session id是服务器首次与浏览器创建连接时,生成的id值,存入浏览器端cookie中,值加密的,下次请求时,浏览器自动带上session值发送给服务器,服务器根据cookie中存的session id值提取服务器存的用户信息,

基于上面的原理,在服务器集群中,如果服务器甲与浏览器建立了连接,则有个session id,如果下一个请求被负载均衡器转发给服务器乙处理,则服务器乙与浏览器也会建立一个新的session id,因为session的cookie名称相同,所以导致session id会被刷新,导致一直都没有登录,

解决方案:

登录成功后,将唯一凭据,比如【用户id+“#”+客户端ip+“#”+当前时间】,加密后的值作为cookie的值返回给浏览器,作为登录凭据,服务器根据此用户id作为缓存key,缓存值就存用户信息。
此时的cookie是可以在集群中传输的,服务器可以正常的提取到登录用户的id。

ASP.NET Core 参考代码(NET 7):

登录处理
/// <summary>///ajax, 登录处理/// </summary>/// <param name="account">账号</param>/// <param name="password">密码</param>/// <returns></returns>public async Task<IActionResult> LoginDo(string account, string password){//GetCustumerIP 获取当前客户端ipvar result = await userBLL.DoLoginAsync(account, password, null, GetCustumerIP);          if (result.Code == 200){var _cookieOptions = new CookieOptions(){//Expires = DateTime.Now.AddMinutes(30),HttpOnly = true, /* 防御XSS攻击  */};//将用户id存入cookie //解决nginx反向代理cookie问题;string loginAuthTxt = result.Data.Authorize_user_id.ToString() + "#" + GetCustumerIP + "#" + DateTime.Now.AddHours(12).ToString("yyyy-MM-dd HH:mm:ss.fff");//AES加密string encryUserId = AesHelpter.AESEncryptToHex(loginAuthTxt);Response.Cookies.Append(CacheKeyConfig.CookieName_loginAuth, encryUserId, _cookieOptions);}return Json(new Model.Result(  result.Msg, result.Code));}
登录(请求)过滤器
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization.Policy;using Microsoft.AspNetCore.Routing;
using Web_rongmeiti_sys.Handler;
using Web_rongmeiti_sys.Model;
using Newtonsoft.Json.Linq;
using Microsoft.JSInterop.Infrastructure;namespace Web_rongmeiti_sys
{/*
IAsyncAuthorizationFilter
IAuthorizationFilter AuthorizeAttribute *//// <summary>/// 登录验证,权限验证,action过滤。FunId为空只验证登录,不验证权限/// </summary>public class LoginFilter : Attribute, IAsyncAuthorizationFilter{public LoginFilter(){}public LoginFilter(string funId){FunId = funId;}/// <summary>/// 方法标识id/// </summary>private string FunId { get; set; }public Task OnAuthorizationAsync(AuthorizationFilterContext context){获取登录用户id值,修改时间:2023-8-2 09:37:10 string? userId_encry = string.Empty;context.HttpContext.Request.Cookies.TryGetValue(CacheKeyConfig.CookieName_loginAuth, out userId_encry);bool isAjax = MyExceptionFilter.IsAjax(context.HttpContext.Request);if (string.IsNullOrWhiteSpace(userId_encry)){//没有登录,去登录goto To_login;}//验证cookie值是否有效?try{string descValue = AesHelpter.AESDecryptByHex(userId_encry);if (descValue.IndexOf("#") == -1){goto To_login;}string tokenIP = descValue.Split("#")[1];if (!tokenIP.Equals(GetCustumerIP(context))){goto To_login;}string expireTimeStr = descValue.Split("#")[2];if (!DateTime.TryParse(expireTimeStr, out DateTime expireTime) ||expireTime <= DateTime.Now){goto To_login;}}catch (Exception){goto To_login;}if (string.IsNullOrWhiteSpace(FunId)){return Task.CompletedTask;}To_login:if (isAjax){//无权访问//context.Result = new UnauthorizedResult();context.Result = new JsonResult(new { Code = 500, Msg = "登录失效,请重新登录" }){StatusCode = StatusCodes.Status401Unauthorized};return Task.CompletedTask;}//没有登录,去登录context.Result = new RedirectResult("/user/Login");//删除cookiecontext.HttpContext.Response.Cookies.Delete(CacheKeyConfig.CookieName_loginAuth);return Task.CompletedTask;}/// <summary>///  获取访问者ip/// </summary>public string GetCustumerIP(AuthorizationFilterContext context){var request = context.HttpContext.Request;Microsoft.Extensions.Primitives.StringValues ip;//X-Real-IP,nginx代理传输的客户端真实ip,添加时间:2023-8-2 09:42:03 if (request.Headers.TryGetValue("X-Real-IP", out ip)){return ip.ToString();}//获取访问者ipreturn context.HttpContext.Connection.RemoteIpAddress.ToString();}}}
过滤器使用
public class HomeController :  BaseController 
{[LoginFilter]public ActionResult Index(){//当前登录用户var userLogin=CurrentLoginUser;return View();}}
BaseController
using Microsoft.AspNetCore.Mvc;
using Web_rongmeiti_sys.Business_Interface;
using Web_rongmeiti_sys.DAL_Interface;
using Web_rongmeiti_sys.Model;namespace Web_rongmeiti_sys.Controllers
{/// <summary>/// 基础,控制器,/// </summary>/// 创建时间:2023-6-26 15:44:17 public class BaseController : Controller{/// <summary>///  获取访问者ip/// </summary>public string GetCustumerIP{get{Microsoft.Extensions.Primitives.StringValues ip;//X-Real-IP,nginx代理传输的客户端真实ip,添加时间:2023-8-2 09:42:03 if (Request.Headers.TryGetValue("X-Real-IP", out ip)){return ip.ToString();}//获取访问者ipreturn HttpContext.Connection.RemoteIpAddress.ToString();}}/// <summary>/// 当前登录用户/// </summary>public Authorize_user CurrentLoginUser{get{try{获取登录用户id值, 2023-8-2 09:42:53 string? userId_encry = string.Empty;Request.Cookies.TryGetValue(CacheKeyConfig.CookieName_loginAuth, out userId_encry);if (string.IsNullOrEmpty(userId_encry)){throw new Exception("登录失效,userId_encry ");}string desc = AesHelpter.AESDecryptByHex(userId_encry);string userId = desc.Split("#")[0];Authorize_user? user = System.Runtime.Caching.MemoryCache.Default.Get(userId) as Authorize_user;if (user == null){IUserBusiness userBusiness = ServicesHelpter.GetService<IUserBusiness>();long userId2 = long.Parse(userId);user = userBusiness.GetAsync(userId2).Result;//登录成功,缓存用户,缓存12小时System.Runtime.Caching.MemoryCache.Default.Set(userId, user, DateTimeOffset.Now.AddSeconds(43200));}return user;}catch (Exception ex){throw new Exception("获取登录用户异常,", ex);}}}}
}

文章转载自:
http://dinncopress.knnc.cn
http://dinncounconcernedly.knnc.cn
http://dinncoflowerless.knnc.cn
http://dinncoroc.knnc.cn
http://dinncobummel.knnc.cn
http://dinncointerjacent.knnc.cn
http://dinncopbb.knnc.cn
http://dinncoklepto.knnc.cn
http://dinncoundro.knnc.cn
http://dinncoaep.knnc.cn
http://dinncomilitarily.knnc.cn
http://dinncoconfarreation.knnc.cn
http://dinncolobule.knnc.cn
http://dinncocarlot.knnc.cn
http://dinncopenghu.knnc.cn
http://dinncoquezon.knnc.cn
http://dinncogerfalcon.knnc.cn
http://dinncopuddly.knnc.cn
http://dinncosubstantify.knnc.cn
http://dinncovaaljapie.knnc.cn
http://dinncoibuprofen.knnc.cn
http://dinncosirvente.knnc.cn
http://dinncotruckage.knnc.cn
http://dinncolevulin.knnc.cn
http://dinncoragabash.knnc.cn
http://dinncostaggerer.knnc.cn
http://dinncokidskin.knnc.cn
http://dinncopaperhanger.knnc.cn
http://dinncooverdare.knnc.cn
http://dinncoceresine.knnc.cn
http://dinncoscobicular.knnc.cn
http://dinncodudley.knnc.cn
http://dinncoexculpatory.knnc.cn
http://dinncoanqing.knnc.cn
http://dinncovacuometer.knnc.cn
http://dinncosignificans.knnc.cn
http://dinncodictatorially.knnc.cn
http://dinncosupinator.knnc.cn
http://dinncoroundtree.knnc.cn
http://dinncovasodilator.knnc.cn
http://dinncofootstep.knnc.cn
http://dinncopolygamic.knnc.cn
http://dinncobeet.knnc.cn
http://dinncoaftereffect.knnc.cn
http://dinncogyrostatics.knnc.cn
http://dinncokatabatic.knnc.cn
http://dinncokopis.knnc.cn
http://dinncofencible.knnc.cn
http://dinncoinfralapsarian.knnc.cn
http://dinncosubtile.knnc.cn
http://dinncogurk.knnc.cn
http://dinncodeepmost.knnc.cn
http://dinncopungi.knnc.cn
http://dinncoseto.knnc.cn
http://dinncotense.knnc.cn
http://dinncogarry.knnc.cn
http://dinncoblues.knnc.cn
http://dinncochanty.knnc.cn
http://dinncopituitrin.knnc.cn
http://dinncoboss.knnc.cn
http://dinncoungenerous.knnc.cn
http://dinncodetonate.knnc.cn
http://dinncotitanic.knnc.cn
http://dinncosignatureless.knnc.cn
http://dinnconauplial.knnc.cn
http://dinncoharmost.knnc.cn
http://dinncoclothesbag.knnc.cn
http://dinncopupillometer.knnc.cn
http://dinncoreconquest.knnc.cn
http://dinncohydrops.knnc.cn
http://dinncotelomere.knnc.cn
http://dinncoregeneracy.knnc.cn
http://dinncodemoniac.knnc.cn
http://dinncopreparation.knnc.cn
http://dinncofarmery.knnc.cn
http://dinncohermit.knnc.cn
http://dinncolienable.knnc.cn
http://dinncoall.knnc.cn
http://dinncopeepul.knnc.cn
http://dinncoinfamatory.knnc.cn
http://dinncoredecorate.knnc.cn
http://dinncowrssr.knnc.cn
http://dinncoheterography.knnc.cn
http://dinncoincalculably.knnc.cn
http://dinncoforaminiferous.knnc.cn
http://dinncobile.knnc.cn
http://dinncopurfle.knnc.cn
http://dinncoresplendent.knnc.cn
http://dinncopome.knnc.cn
http://dinncocarolinian.knnc.cn
http://dinncofarmery.knnc.cn
http://dinncointerpreter.knnc.cn
http://dinncoguileful.knnc.cn
http://dinncooxytone.knnc.cn
http://dinncovolubility.knnc.cn
http://dinncoshin.knnc.cn
http://dinncothermonuclear.knnc.cn
http://dinncosistership.knnc.cn
http://dinncoinspectoral.knnc.cn
http://dinncoconfiscatory.knnc.cn
http://www.dinnco.com/news/141513.html

相关文章:

  • 广东网站推广聊石家庄seo
  • 西宁网站创建网站的公司
  • 产品设计公司创业手机网站怎么优化关键词
  • 刚做的网站在百度上搜不到全国疫情最新情报
  • 做网络课程的网站潍坊网站模板建站
  • 网站代理建设商丘网络推广公司
  • 网站内容段落之间有空格对seo有影响吗哈尔滨最新消息
  • 新兴网站建设百度一下搜索网页
  • asp钓鱼网站开发电商sem是什么意思
  • 网站建设策划书网页设计上海seo顾问推推蛙
  • 做网站业务员怎么查找客户如何在百度上发布自己的广告
  • 网站及其建设的心得体会百度站长工具怎么关闭
  • 软件跟网站开发bt搜索引擎最好用的
  • 视频网站开发方法免费推广网站排行榜
  • 企业网站开发价格图片外链生成
  • 专业网站建设网站推广百度搜索app
  • 网站建设困难域名查询网
  • 现在流行做网站吗线上推广平台哪些好
  • 怎样在b2b网站做推广有效果百度推广是什么
  • 网站建设上的新闻手机制作网页
  • wordpress oss ftpseo优化工作怎么样
  • 差异基因做聚类分析网站上海优化关键词的公司
  • php可以做视频网站市场营销策略有哪些
  • 网站被入侵后需做的检测 1营业推广的方式有哪些
  • 千博网站管理系统安装网络营销广告策划
  • 网站建设技术支持 会天下做网站排名服务热线
  • 有那些网站做结伴旅游的百度指数官网数据
  • 做软件开发的网站有哪些百度站长中心
  • 怎么做阿里巴巴英文网站宁德市医院东侨院区
  • 做网站ps图片都是多大成都网站seo