.NetCore实现Session与Cookie以及授权过滤器的步骤

本文详细介绍了在.NetCore应用程序中如何实现Session和Cookie的存储及验证,以及创建自定义授权过滤器的过程。首先,登录成功时在控制器中设置Session和Cookie值;接着,自定义公共类以处理对象存储;然后,在Startup.cs中注册服务和添加中间件,并调整Session配置。在控制器中,通过检查Cookie来判断用户授权状态,从Session获取用户信息。此外,创建了名为UserAuthorizeAttribute的授权过滤器,并将其应用于需要授权的控制器方法。最后,退出时清除Session和Cookie。
摘要由CSDN通过智能技术生成

1:在控制器验证登录成功时存储session与cookie的值

        /// <summary>
        /// 验证登录 存储Session或Cookie
        /// </summary>
        /// <returns></returns>
        public async Task<IActionResult> ValidateLogin(AdminInfo adminInfo)
        {
            var result = _adminInfoService.ValidateLogin(adminInfo.LoginName, adminInfo.LoginPwd);
            if (result.success)
            {
                AdminInfo admin = result.data;
                //写入Session
                HttpContext.Session.Set("Market_Admin", admin);
                //写Cookie
                var identity = new ClaimsIdentity("Forms");     // 指定身份认证类型
                identity.AddClaim(new Claim(ClaimTypes.Sid, admin.AdminId.ToString()));  // 用户Id
                identity.AddClaim(new Claim(ClaimTypes.Name, admin.LoginName));       // 用户名称
                

                //创建身份证这个证件的携带者:我们叫这个证件携带者为“证件当事人”
                var principal = new ClaimsPrincipal(identity);
                await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties { IsPersistent = true });
            }
            return Json(result);
        }

2.写入session时因为自带的方法中没有参数为对象的方法 所以在公共层(Infrastructure)需要添加一个类,在类中自定义方法

using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;

namespace JiaHua.Market.Infrastructure
{
    public static class SessionExtensions 
    {
        #region 存储Session对象
        /// <summary>
        /// 存储Session对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="session"></param>
        /// <param name="key"></param>
        /// <param name="value"&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值