中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Asp.Net Core中利用Session實現身份驗證

發布時間:2021-05-27 16:56:27 來源:億速云 閱讀:292 作者:Leah 欄目:開發技術

怎么在Asp.Net Core中利用Session實現身份驗證?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

每種驗證方式都有適合它的場景:

1.Windowss身份驗證通常用于企業內部環境,Windows Active Directory就是基于windows平臺的身份驗證實現;
2.Forms身份驗證是Asp.Net框架中提出的另一種驗證方式;
3.passport身份驗證是微軟提供的基于自己的lives賬號實現的單點認證服務。

Asp.net Core驗證碼登錄遇到兩個小問題

第一是在Asp.net Core中引用dll,以往我們引用DLL都是直接引用,在Core里這樣是不行的,必須基于NuGet添加,或者基于project.json添加,然后保存VS會啟動還原類庫。

第二就是使用Session的問題,Core里使用Session需要添加Session類庫。

第一步:在你的項目上基于NuGet添加:

install-package Microsoft.AspNetCore.Session -ver 2.0

install-package Microsoft.AspNetCore.Http.Extensions -ver 2.0

第二步:修改startup.cs

在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session(這個地方是Asp.net Core pipeline):

services.AddSession();

接下來我們要告訴Asp.net Core使用內存存儲Session數據,在Configure(IApplicationBuilder app,...)方法中添加代碼:

app.UseSession();

基于Session的身份驗證實現

這種方式可能是在Asp.Net框架提供的幾種驗證方式之外的最常用的身份驗證方式。

實現原理

1.客戶端發送身份認證數據到服務器
2.服務器收到并驗證后將用戶信息保存到Session對象中,然后生成對應的標識并將標識寫入cookie中
3.當客戶端下次請求時帶上該cookie標識
4.服務器通過該cookie標識從session對象中獲取對應的用戶信息

Asp.Net Core中的Session身份認證實現

基于Session的身份認證并不是Asp.Net Core中推薦的認證方式,因為Asp.Net Core中有更高級的Forms身份認證方式,不過在這里不是本文章的主題,我們只講如何在Asp.Net Core中實現基于Session的身份認證。

我們先創建一個用于代碼演示的基礎項目

dotnet new razor -n SessionSample

在startup.cs中啟用session功能

public class Startup
{
  public void ConfigureServices(IServiceCollection services)
  {
    ...
    //添加session服務
    services.AddSession();
  }
  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
    ...
    //啟用session
    app.UseSession();
    app.UseMvc();
  }
}

創建一個MyPage.cs文件,我們在該類中實現了一個IsLogin屬性,該屬性用來判斷用戶的登陸狀態:

public class MyPage:PageModel
{
  protected bool IsLogin
  {
    get
    {
      string userId = null;
      //從sessin中獲取UserId對應的用戶信息來判斷用戶是否登陸
      if (HttpContext.Session.TryGetValue("UserId", out byte[] bytes))
      {
        userId = Encoding.UTF8.GetString(bytes);
      }
      return !string.IsNullOrWhiteSpace(userId);
    }
  }
}

我們已經實現了驗證,現在缺少的是如何在session中添加UserId的信息,我們來創建一個Login頁面:

dotnet new page -n Login
public class LoginModel : MyPage
{
  public void OnGet()
  {
    if(IsLogin)
    {
      //如果已經登陸就跳轉到/Index頁面
      RedirectToPage("/Index");
    }
  }
  public IActionResult OnPost()
  {
    //這里我們將UserId寫入session中
    HttpContext.Session.SetString("UserId", Guid.NewGuid().ToString());
    return RedirectToPage("/Index");
  }
}

給現有的頁面添加驗證功能,打開Index頁面,添加如下代碼:

public class IndexModel : MyPage
{
  public IActionResult OnGet()
  {
    if (!IsLogin)
    {
      return RedirectToPage("/Login");
    }
    return Page();
  }
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

米易县| 昆明市| 三河市| 同德县| 葫芦岛市| 洛宁县| 蓬安县| 通许县| 长武县| 彰化市| 永和县| 伊通| 永修县| 台北县| 扶绥县| 郯城县| 吕梁市| 文成县| 峨眉山市| 高州市| 临洮县| 济阳县| 屯昌县| 界首市| 高密市| 马尔康县| 玉树县| 雷州市| 历史| 桐乡市| 吉林省| 禄劝| 马关县| 绥阳县| 吴川市| 安阳市| 正阳县| 高淳县| 娱乐| 十堰市| 博兴县|