3分钟快速学会在ASP.NET Core MVC中如何使用Cookie_实用技巧

来源:脚本之家  责任编辑:小易  

每个人学习的步骤不尽相同,这跟自身的基础有关,对于大部分初学者来说,可以用这个学习步骤:1,相关环境安装配置2,Html中Form表单详细习3,VBScript学习(一)4,VBScript学习(二)5,ASP内置对象Request学习6,ASP内置对象Response学习7,Cookies知识专题8,ASP内置对象Applicationt学习9,ASP内置对象Session学习10,Global.asa及Chat程序11,ASP内置对象Server学习12,广告轮显及内容轮显组件13,文件超级链接组件14,计数器组件15,文件存取组件16,数据库设计及SQL简介17,ADO组件之连接数据库18,插入记录:注册系统19,验证记录:登录系统20,客户端输入并显示:留言本系统21,分页技术22,修改更新记录:管理系统23,客户端选择性显示记录:查询系统24,案例分析:同学录系统25,案例分析:论坛BBS26,DWMX动态ASP站点设计(一)27,DWMX动态ASP站点设计(二)28,DWMX动态ASP站点设计(三)29,DWMX动态ASP站点设计(四)30,技术总结,。Net技术展望需要多少时间?这就要看你了2.查询数据库是否已经链接If conn.state=2 ThenResponse.Write("正在连接")ElseIf conn.state=1 ThenResponse.Write("连接已经打开")ElseResponse.Write("对不起,无法打开连接")End If详细出处参考:http://www.jb51.net/article/20974.htmwww.zgxue.com防采集请勿采集本网。

一.Cookie是什么?

Q:请问能够像winform一样用Thread来完成吗?A:用asp.net做动态演示的话 最简单的办法是用js来写 在js中完成整个快排的过程 用settimeout(函数,时间);来进行逐步的演示 或者用ajax调用后台代码 总之需要控制

我的朋友问我cookie是什么,用来干什么的,可是我居然无法清楚明白简短地向其阐述cookie,这不禁让我陷入了沉思:为什么我无法解释清楚,我对学习的方法产生了怀疑!所以我们在学习一个东西的时候,一定要做到知其然知其所以然。

对于劈叉要循序渐进,不能急,一急必伤,劈叉对地形也有要求,要比较滑的,之前要做热身的,劈之前要把脚放在墙上往上抬,到了比较酸疼的时候坚持一分钟然后拿下来,那是就会有种必须抬起来的

HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。Cookie实际上是一小段的文本信息)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

PHP我不会,也没经验,对于ASP我可以给你提点心得。因为ASP我也是自学的。学会基础你可以从下入手:1、网站的建设可分为三个部分,前台、后台、数据库 2、对数据的操作分为添加、删除、修改 3、

打个比方,这就犹如你办理了银行卡,下次你去银行办业务,直接拿银行卡就行,不需要身份证。

你说的net快速开发工具,应该就是net快速开发平台或者快速开发框架了,其实这个问题你自己百度一下就可以了。现在的快速开发平台都不错的,不过我还是建议你用learun敏捷开发框架,因为他们的技术支持比较

二.在.NET Core中尝试

如果楼主是毫无编程基础的话,那必须是智商200左右~ 一家之言~见笑~

废话不多说,干就完了,现在我们创建ASP.NET Core MVC项目,撰写该文章时使用的.NET Core SDK 3.0 构建的项目,创建完毕之后我们无需安装任何包,

但是我们需要在Startup中添加一些配置,用于Cookie相关的。

//public const string CookieScheme = "YourSchemeName"; public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //CookieAuthenticationDefaults.AuthenticationScheme Cookies Default Value //you can change scheme services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.LoginPath = "/LoginOrSignOut/Index/"; }); services.AddControllersWithViews(); // is able to also use other services. //services.AddSingleton<IConfigureOptions<CookieAuthenticationOptions>, ConfigureMyCookie>(); }

在其中我们配置登录页面,其中 AddAuthentication 中是我们的方案名称,这个是做什么的呢?很多小伙伴都懵懵懂懂表示很懵逼啊,我看很多人也是都写得默认,那它到底有啥用,经过我看AspNetCore源码发现它这个是可以做一些配置的。看下面的代码:

internal class ConfigureMyCookie : IConfigureNamedOptions<CookieAuthenticationOptions> { // You can inject services here public ConfigureMyCookie() {} public void Configure(string name, CookieAuthenticationOptions options) { // Only configure the schemes you want //if (name == Startup.CookieScheme) //{ // options.LoginPath = "/someotherpath"; //} } public void Configure(CookieAuthenticationOptions options) => Configure(Options.DefaultName, options); }

在其中你可以定义某些策略,随后你直接改变 CookieScheme 的变量就可以替换某些配置,在配置中一共有这几项,这无疑是帮助我们快速使用Cookie的好帮手~点个赞。

在源码中可以看到Cookie默认保存的时间是14天,这个时间我们可以去选择,支持TimeSpan的那些类型。

public CookieAuthenticationOptions() { ExpireTimeSpan = TimeSpan.FromDays(14); ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter; SlidingExpiration = true; Events = new CookieAuthenticationEvents(); }

接下来LoginOrOut Controller,我们模拟了登录和退出,通过 SignInAsync 和 SignOutAsync 方法。

[HttpPost] public async Task<IActionResult> Login(LoginModel loginModel) { if (loginModel.Username == "haozi zhang" && loginModel.Password == "123456") { var claims = new List<Claim> { new Claim(ClaimTypes.Name, loginModel.Username) }; ClaimsPrincipal principal = new ClaimsPrincipal(new ClaimsIdentity(claims, "login")); await HttpContext.SignInAsync(principal); //Just redirect to our index after logging in. return Redirect("/Home/Index"); } return View("Index"); } /// <summary> /// this action for web lagout /// </summary> [HttpGet] public IActionResult Logout() { Task.Run(async () => { //注销登录的用户,相当于ASP.NET中的FormsAuthentication.SignOut await HttpContext.SignOutAsync(); }).Wait(); return View(); }

就拿出推出的源码来看,其中获取了Handler的某些信息,随后将它转换为 IAuthenticationSignOutHandler 接口类型,这个接口 as 接口,像是在地方实现了这个接口,然后将某些运行时的值引用传递到该接口上。

public virtual async Task SignOutAsync(HttpContext context, string scheme, AuthenticationProperties properties) { if (scheme == null) { var defaultScheme = await Schemes.GetDefaultSignOutSchemeAsync(); scheme = defaultScheme?.Name; if (scheme == null) { throw new InvalidOperationException($"No authenticationScheme was specified, and there was no DefaultSignOutScheme found. The default schemes can be set using either AddAuthentication(string defaultScheme) or AddAuthentication(Action<AuthenticationOptions> configureOptions)."); } } var handler = await Handlers.GetHandlerAsync(context, scheme); if (handler == null) { throw await CreateMissingSignOutHandlerException(scheme); } var signOutHandler = handler as IAuthenticationSignOutHandler; if (signOutHandler == null) { throw await CreateMismatchedSignOutHandlerException(scheme, handler); } await signOutHandler.SignOutAsync(properties); }

其中 GetHandlerAsync 中根据认证策略创建了某些实例,这里不再多说,因为源码深不见底,我也说不太清楚...只是想表达一下看源码的好处和坏处....

public async Task<IAuthenticationHandler> GetHandlerAsync(HttpContext context, string authenticationScheme) { if (_handlerMap.ContainsKey(authenticationScheme)) { return _handlerMap[authenticationScheme]; } var scheme = await Schemes.GetSchemeAsync(authenticationScheme); if (scheme == null) { return null; } var handler = (context.RequestServices.GetService(scheme.HandlerType) ?? ActivatorUtilities.CreateInstance(context.RequestServices, scheme.HandlerType)) as IAuthenticationHandler; if (handler != null) { await handler.InitializeAsync(scheme, context); _handlerMap[authenticationScheme] = handler; } return handler; }

最后我们在页面上想要获取登录的信息,可以通过 HttpContext.User.Claims 中的签名信息获取。

@using Microsoft.AspNetCore.Authentication<h2>HttpContext.User.Claims</h2><dl> @foreach (var claim in User.Claims) { <dt>@claim.Type</dt> <dd>@claim.Value</dd> }</dl><h2>AuthenticationProperties</h2><dl> @foreach (var prop in (await Context.AuthenticateAsync()).Properties.Items) { <dt>@prop.Key</dt> <dd>@prop.Value</dd> }</dl>

三.最后效果以及源码地址#

GitHub地址:https://github.com/zaranetCore/aspNetCore_JsonwebToken/tree/master/src/Identity.Cookie/DotNetCore_Cookie_Sample

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对真格学网的支持。

asp不难学,入门简单,深入开发也可以的1.兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的2.从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了现在最好是学php或者asp.net了内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • asp.net cookie的操作,写入、读取与操作
  • asp.net之response.cookies.remove 无法删除cookie的原因
  • asp.net清空cookie的两种方法
  • asp.net cookie跨域、虚拟目录等设置方法
  • asp.net(c#)跨域及跨域写cookie问题
  • asp.net cookie值中文乱码问题解决方法
  • asp.net利用cookie保存用户密码实现自动登录的方法
  • asp.net关于cookie跨域(域名)的问题
  • asp.net中的cookie使用介绍
  • asp.net cookie清除的代码
  • 解决vs2015中没有报表项(reportviewer)的方法
  • mvc异步分页代码分享
  • 详解.net core中的日志组件(logging)
  • net页面导出excel实例代码
  • javascript验证用户输入的是字符或数字及ascii chart应用
  • asp.net利用反射实现给model类赋值的方法
  • .net winfrom中给文本框添加拖放事件的代码
  • 使用.net实现多线程经验总结
  • aspx与ascx,ashx的用法总结
  • asp.net网站防恶意刷新的cookies与session解决方法
  • 怎么快速学会ASP
  • 如何才能快速学会做ASP网站
  • 有什么方法可以快速的掌握ASP.NET 3.5,请高手指教,别说努力就可以办到,这个我懂,要真实的经验之谈。
  • 怎样学好asp?我说的学好是指,可以快速建设网站,灵运用数据库。
  • 关于在asp.net网页中完成快速排序的演示问题~~谢谢了~我刚刚学.net
  • 3天快速学会劈叉下叉
  • 如何快速学习ASP与PHP?拜托各位了 3Q
  • 国内asp.net快速开发工具哪个好
  • 如何在3个月内快速有效的学会编程
  • 怎样快速学好3DSMAX软件
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.net实用技巧asp.net cookie的操作,写入、读取与操作asp.net之response.cookies.remove 无法删除cookie的原因asp.net清空cookie的两种方法asp.net cookie跨域、虚拟目录等设置方法asp.net(c#)跨域及跨域写cookie问题asp.net cookie值中文乱码问题解决方法asp.net利用cookie保存用户密码实现自动登录的方法asp.net关于cookie跨域(域名)的问题asp.net中的cookie使用介绍asp.net cookie清除的代码解决vs2015中没有报表项(reportviewer)的方法mvc异步分页代码分享详解.net core中的日志组件(logging)net页面导出excel实例代码javascript验证用户输入的是字符或数字及ascii chart应用asp.net利用反射实现给model类赋值的方法.net winfrom中给文本框添加拖放事件的代码使用.net实现多线程经验总结aspx与ascx,ashx的用法总结asp.net网站防恶意刷新的cookies与session解决方法java正则表达式 pattern和matche未将对象引用设置到对象的实例 (asp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net汉字转拼音和获取汉字首字asp.net对路径"xxxxx"asp.net拒绝访问临时目录的解决方法.net core webapi jwt 更为清爽的认证详解.net面向对象之多线程(multithreading)及管理员登录设计(第7节)mvc+easyui+三层新闻网站建立 验证码生成asp.net cookie操作类javascript判断是否有对radiobuttonlist选asp.net使用datagridtree实现下拉树的方法asp.net中命名空间namespace浅析和使用例asp.net防止刷新自动触发事件的解决方案
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved