zoukankan      html  css  js  c++  java
  • ASP.NET Core MVC中如何使用Session实现身份验证

    一、什么是Session?

    Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。  Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。 Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。

    ASP.NET页面是"无状态"的,这意味着每次向服务器发送一个请求,服务器都会生成一个该页面的实例。但有时候,我们希望在不同的页面之间共享信息,比如购物车、用户登录等,于是,ASP.NET为我们提供了一个服务端的Session机制。

    对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。 

    二、 Session是如何工作的以及工作机制和工作流程

    服务端的Session机制是基于客户端的,也就是说服务端的Session会保存每个客户端的信息到服务端内存中。

    具体过程是这样的:
    →客户端向服务端发出请求
    →服务端响应客户端,并针对该客户端创建Session和唯一的Session ID
    →把Session ID作为key, Session内容作为value,以键值对形式存储到Session State Provider中
    →客户端带着专属的Session ID再次向服务端请求
    →服务端的Session机制根据客户端的Session ID,从Session State Provider中取出内容返回给客户端。

    三、ASP.NET Core MVC使用Session方式来实现用户身份验证

    这篇文章主要为大家详细介绍了ASP.NET Core MVC使用Session验证用户登录的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,用最简单的Session方式记录用户登录状态。这里阿笨已经把关键性代码展示出来了,感兴趣的可以学习一下。

    基于Session的身份验证实现 这种方式可能是在Asp.Net框架提供的几种验证方式之外的最常用的身份验证方式。

    实现核心原理和具体实现步骤:

    1)、客户端发送身份认证数据到服务器端服务器收到并验证后将用户信息保存到Session对象中,

    2)、然后生成对应的标识并将标识写入cookie中当客户端下次请求时带上该cookie标识服务器通过该cookie标识从session对象中获取对应的用户信息 。

    1)、 Asp.Net Core中Session中间件的使用

    我们需要在用户登录以后记录当前登录用户的会话状态,ASP.NET Core 已经内置发布了一个关于会话的程序包(Microsoft.Extensions.DependencyInjection),里面提供了用于管理会话状态的中间件。

    修改Startup.cs文件的的ConfigureServices方法,增加Session服务注册

    修改Startup.cs文件的的Configure方法,请求管道中启用Session

    2)添加BaseAdminController控制器,重写OnActionExecuting方法,每次访问控制器前触发。

    3)、登录成功后实现对用户信息存储到Session中

    4)、需要验证的控制器继承BaseAdminController

    比如首页

    用户管理页面

    四、源代码示例下载

    扫码关注下方微信公众号,回复d6i3关键字获取源代码下载地址。

    有问题微信公众号回复wx关键字,加阿笨的个人微信号。

    作者:阿笨

          【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558跟着阿笨一起玩NET

          【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616跟着阿笨一起玩C#

          【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586跟着阿笨一起玩ASP.NET

          【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:806491485Asp.Net Core跨平台技术开

          【官方QQ五群:.NET Core跨平台开发技术(可加入)】:1036896405.NET Core跨平台开发技术

          【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628

          【腾讯课堂】:https://abennet.ke.qq.com

          【51CTO学院】:https://edu.51cto.com/sd/66c64

          【微信公众号】:http://dwz.cn/ABenNET

  • 相关阅读:
    变量系列教材 (一)- Java中 什么是变量
    HelloWorld系列(七)- 各种软件、工具版本兼容说明
    HelloWorld系列(六)- eclipse常见的使用技巧
    HelloWorld系列(四)- 使用ecipse创建第一个 java project
    HelloWorld系列(二)- 用命令行中编写第一个 java 程序
    HelloWorld系列(一)- 手把手教你做JDK环境变量配置
    面向对象(三)- Java类的方法
    [LeetCode] 69. Sqrt(x)
    [LeetCode] 258. Add Digits
    [LeetCode] 187. Repeated DNA Sequences
  • 原文地址:https://www.cnblogs.com/51net/p/14337104.html
Copyright © 2011-2022 走看看