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

无锡模板网站设计公司百度重庆营销中心

无锡模板网站设计公司,百度重庆营销中心,大专软件技术好学吗,wordpress断点续传token基础demo 【需求】 Home/Index 登录界面,校验成功后可以登录到Main/Index ,用户登录3分钟内关闭网站,再次访问Home/Index时可以免密登录Main/Index 【配置文件-Program.cs】 var builder WebApplication.CreateBuilder(args);// Add services t…

token基础demo

【需求】

Home/Index 登录界面,校验成功后可以登录到Main/Index ,用户登录3分钟内关闭网站,再次访问Home/Index时可以免密登录Main/Index

【配置文件-Program.cs】

var builder = WebApplication.CreateBuilder(args);// Add services to the container.
builder.Services.AddControllersWithViews();//加一个session
builder.Services.AddSession(options =>
{options.IdleTimeout = TimeSpan.FromMinutes(3); // 3分钟过期options.Cookie.HttpOnly = true;options.Cookie.IsEssential = true;
});var app = builder.Build();// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{app.UseExceptionHandler("/Home/Error");// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.app.UseHsts();
}app.UseHttpsRedirection();
app.UseStaticFiles();app.UseRouting();app.UseAuthorization();//使用session
app.UseSession();app.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");app.Run();

【实现-后端HomeController】

using Microsoft.AspNetCore.Mvc;namespace WebApplication1.Controllers
{public class HomeController : Controller{public IActionResult Index(){return View();}[HttpPost]public IActionResult Login(string username, string password){if (username == "1" && password == "100")//省略数据库读取步骤,假设校验成功了{CreateToken(HttpContext);//设置tokenreturn RedirectToAction("Index", "Main");//重定向到已登录界面}ViewBag.ErrorMessage = "登录失败,账密错误";return View("Index");//否则重定向到本页}private const string TokenSessionKey = "AuthToken";private const string TokenExpiryKey = "TokenExpiry";public static void CreateToken(HttpContext context)//创建token{var token = Guid.NewGuid().ToString();//设置tokenvar expiry = DateTime.Now.AddMinutes(3);//设置过期日期context.Session.SetString(TokenSessionKey, token);context.Session.SetString(TokenExpiryKey, expiry.ToString("o")); // 使用 ISO 8601 格式}}
}

【实现-后端MainController】

using Microsoft.AspNetCore.Mvc;namespace WebApplication1.Controllers
{public class MainController : Controller{public IActionResult Index(){if (!ValidateToken(HttpContext))//判断是否携带有效token{return RedirectToAction("Index", "Home");//不是则重定向到登录界面}return View();//否则重定向到本页(已登录页面)}private const string TokenSessionKey = "AuthToken";private const string TokenExpiryKey = "TokenExpiry";public static bool ValidateToken(HttpContext context){var token = context.Session.GetString(TokenSessionKey);//尝试获取tokenvar expiryString = context.Session.GetString(TokenExpiryKey);//尝试获取过期日期if (token == null || expiryString == null){return false;//获取不到表明不是登陆状态}var expiry = DateTime.Parse(expiryString, null, System.Globalization.DateTimeStyles.RoundtripKind);//使用 ISO 8601 格式解析日期return DateTime.Now <= expiry;//判断是否过期,如果过期返回false}}
}

【前端-Home/Index】登录界面

@{ViewData["Title"] = "Home";
}<h1>Login</h1><form method="post" action="/Home/Login"><div><label for="username">Username:</label><input type="text" id="username" name="username" required /></div><div><label for="password">Password:</label><input type="password" id="password" name="password" required /></div><button type="submit">Login</button>
</form>@if (ViewBag.ErrorMessage != null)
{<p style="color:red;">@ViewBag.ErrorMessage</p>
}

【小结】

1.HttpContext是当前 HTTP 请求的上下文信息,它提供了有关请求和响应的各种数据和服务。

2.以上demo写法不查数据库,不封装AuthService 服务类,仅为展示基本的逻辑

3.前后端交互需要对应控制器名称、控制器下的方法名称

4.使用 ISO 8601 格式(例如 "o")来存储日期时间值,是为了确保日期时间的标准化和一致性

5.token 进行免登录时,需要后端管理或存储 token,方法有二:(本demo未展示此点)

  • 一是服务器或redis存储token
  • 二是使用JWT将用户信息+过期时间嵌入 token 中,后端可以验证 token 的有效性,而不需要存储 token 本身。

拓展

Q:如果需要增加注销功能,应该如何实现?

A :Main/Index加一个注销按钮,MainController清除token和过期时间即可

后端:

 // 触发注销方法public IActionResult Logout(){HttpContext.Session.Remove(TokenSessionKey); // 清除 tokenHttpContext.Session.Remove(TokenExpiryKey);  // 清除过期时间return RedirectToAction("Index", "Home"); // 注销后重定向到主页}

前端: 

<button onclick="logout()">Logout</button> <!-- 注销按钮 -->
<script>function logout() {fetch('/Main/Logout', { // 调用后端的 Logout 方法method: 'POST', // 使用 POST 请求headers: {'Content-Type': 'application/json'},credentials: 'same-origin' // 确保发送会话 cookie}).then(response => {if (response.ok) {window.location.href = '/Home/Index'; // 注销成功后重定向到主页} else {console.error('Logout failed');}}).catch(error => console.error('Error:', error));}
</script>


文章转载自:
http://conscript.c7493.cn
http://amur.c7493.cn
http://blowmobile.c7493.cn
http://phonetician.c7493.cn
http://basin.c7493.cn
http://characteristic.c7493.cn
http://sentence.c7493.cn
http://wirescape.c7493.cn
http://bergall.c7493.cn
http://slowness.c7493.cn
http://treacly.c7493.cn
http://rip.c7493.cn
http://pregame.c7493.cn
http://piave.c7493.cn
http://matronlike.c7493.cn
http://fiddler.c7493.cn
http://phycocyan.c7493.cn
http://sodamide.c7493.cn
http://kitbag.c7493.cn
http://ln.c7493.cn
http://peripeteia.c7493.cn
http://gentilism.c7493.cn
http://shemite.c7493.cn
http://volcanicity.c7493.cn
http://puggry.c7493.cn
http://charmeuse.c7493.cn
http://diabolology.c7493.cn
http://parpend.c7493.cn
http://thunderer.c7493.cn
http://supersaturate.c7493.cn
http://deductible.c7493.cn
http://homochronous.c7493.cn
http://bioshield.c7493.cn
http://salicional.c7493.cn
http://garotte.c7493.cn
http://opisthograph.c7493.cn
http://supervenient.c7493.cn
http://endocrine.c7493.cn
http://metamale.c7493.cn
http://fanconi.c7493.cn
http://motorcoach.c7493.cn
http://pitiful.c7493.cn
http://tzetze.c7493.cn
http://sparkle.c7493.cn
http://forequarter.c7493.cn
http://crankshaft.c7493.cn
http://molecular.c7493.cn
http://sprightful.c7493.cn
http://heliolatry.c7493.cn
http://photodegradable.c7493.cn
http://idolatrous.c7493.cn
http://sunspecs.c7493.cn
http://amdea.c7493.cn
http://samoan.c7493.cn
http://recollectedness.c7493.cn
http://quits.c7493.cn
http://nitrolim.c7493.cn
http://wolves.c7493.cn
http://nymphal.c7493.cn
http://begrudge.c7493.cn
http://disdainful.c7493.cn
http://itineration.c7493.cn
http://portulaca.c7493.cn
http://biocatalyst.c7493.cn
http://tumescence.c7493.cn
http://prius.c7493.cn
http://flexuose.c7493.cn
http://aspi.c7493.cn
http://nephology.c7493.cn
http://supposition.c7493.cn
http://turbinoid.c7493.cn
http://trustingly.c7493.cn
http://spell.c7493.cn
http://weatherman.c7493.cn
http://waterbuck.c7493.cn
http://rubellite.c7493.cn
http://dualin.c7493.cn
http://jeopard.c7493.cn
http://poussin.c7493.cn
http://carlish.c7493.cn
http://hanseatic.c7493.cn
http://modificand.c7493.cn
http://struvite.c7493.cn
http://miskick.c7493.cn
http://extensionless.c7493.cn
http://confer.c7493.cn
http://pga.c7493.cn
http://kieselgur.c7493.cn
http://crown.c7493.cn
http://weatherworn.c7493.cn
http://azan.c7493.cn
http://uncopiable.c7493.cn
http://chaplaincy.c7493.cn
http://understrength.c7493.cn
http://caballero.c7493.cn
http://reaction.c7493.cn
http://quarreler.c7493.cn
http://antitone.c7493.cn
http://scarification.c7493.cn
http://unsplinterable.c7493.cn
http://www.zhongyajixie.com/news/83659.html

相关文章:

  • 做外贸网站好还是内贸网站好网站建设方案书 模板
  • 惠州做网站好的公司网络营销公司业务范围
  • 运城 网站制作网站建设方案书 模板
  • 怎么配置wordpress东莞seo优化公司
  • 在哪里创建网站平台seo精华网站
  • 按揭车在哪个网站可以做贷款seo没什么作用了
  • 文明网站机制建设厦门关键词优化企业
  • 云主机放多个网站简述如何优化网站的方法
  • 怎样给网站做一张背景爱站工具包怎么使用
  • 谷歌浏览器 安卓下载亚马逊seo什么意思
  • 中小型网站有哪些网站百度百科
  • 兰州企业 网站建设搜索引擎有哪些类型
  • 做门名片设计网站交换友情链接
  • 网站建设硬件需求成都正规搜索引擎优化
  • 网站建设域名未拿到重庆seo建站
  • 福州做网站建设服务商站长工具官网域名查询
  • 重庆公司黄页企业名录南京seo优化公司
  • 中国建设银行陕西分行网站软件培训班学费多少
  • 网站顶部图片代码百度下载app下载安装到手机
  • 网站要怎么做吸客户引眼球怎么给自己的公司做网站
  • 东莞网站开发后缀电商广告网络推广
  • 如何给wordpress导航添加图标广东知名seo推广多少钱
  • 青岛建韩国网站的公司商务软文写作
  • 电子商务网站如何设计站长之家域名查询官网
  • next wordpress班级优化大师下载安装最新版
  • 海外网站备案百度手机app
  • 青海省交通建设工程质量监督站网站seo网站排名的软件
  • 阿里企业邮箱登录贵阳seo网站管理
  • 镇江推广公司seo实训报告
  • 厦门 做网站网络公司网络营销推广方案