首页 > 编程语言 >篇(11)-Asp.Net Core入门实战-用户登录,记录Cookie,使用Session

篇(11)-Asp.Net Core入门实战-用户登录,记录Cookie,使用Session

时间:2022-11-14 09:55:58浏览次数:40  
标签:11 Core Asp cookie 登录 Session Cookie cs new

入门实战-用户登录,记录Cookie,使用Session

用户登录功能是做项目开发的必备功能,各个业务点中都要读取和使用用户信息,所以用户登录,并记录用户信息可以使用Cookie,Session等功能。

(1).先在Home视图内建立一个Login.cshtml的登录文件,代码如下

(2).然后是Action的编写;还是2个action,一个HttpGet,一个HttpPost;

(3).在HttpPost类型的Action Login内,要进行密码的验证和缓存数据;我贴出代码,注意看关键行注释说明;

[HttpPost]
public IActionResult Login(string userName,string passWord)
{
string uName = userName;
string uPass = passWord;//此处可以对密码进行加密处理
//以用户名,密码为条件,从数据库获取用户对象;
//if(User!=null){则将用户对象使用Cookie/Session缓存}
//代码假定用户名=admin 密码=123456
if (uName=="admin" && uPass=="123456")
{
//1.最简单的Cookie用法(不安全的):
CookieOptions options = new CookieOptions();
options.Expires = DateTime.Now.AddMinutes(10);//10分钟后过期
Response.Cookies.Append("cookie_UserName", uName, options);//设置用
Response.Cookies.Append("cookie_UserPass", uPass, options);//设置密码
string _userName = Request.Cookies["cookie_UserName"];//读取cookie用户名
string _userPass = Request.Cookies["cookie_UserPass"];//读取cookie密码
ViewData["_userName"] = _userName;
ViewData["_UserPass"] = _userPass;
//2.使用基于Claim的 Cookie加密认证
//使用前,可以在Startup.cs中配置Cookie信息
var claims = new[] {
new Claim(ClaimTypes.Name,uName),
new Claim("UserPass",uPass) //还可以添加登录时间,ip等信息
};
var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
ClaimsPrincipal user = new ClaimsPrincipal(claimsIdentity);
HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user,
new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTimeOffset.Now.AddMinutes(20) }
);
return RedirectToAction("Index", "Home");//不同Controller的跳转写法
//return Redirect("Privacy");//同一个Controller下的写法
}
else
{
return RedirectToAction("Error", "Home");
}
}

 

(4).在Index的action内,要进行一个判读读取;

(5).在Index.cshtml中进行用户信息的读取显示,但是发现,读取Claims的信息时,没有成功,虽然在Login的Action内,做了设置,但还没有在startup.cs中配置Cookie信息;

(6).在Startup.cs文件中,配置Cookie,这样就可以读取到Claims的信息;

(7).在导航中做个判断,用户登录,显示【用户名】和退出,否则显示【登录】

(8).在HomeController中等登录Login Action下增加一个Logout,用来实现退出功能

(8).Session的简单实用实例,先在Startup.cs中配置一下session的有效期;在startup.cs的Configure方法中,增加app.UseSession();

(9).还是在Login的Action中,增加一段Session设置和读取的代码

(10).最后可以检验一下2分钟后,退出时,看看还不能获取到session值。

(11).在导航菜单上再加上验证,比如在点击上传文件时,如果用户没登录,则直接跳转到登录页(默认跳转已经在startup.cs的cookie设置中配好了url)。首先还是需要在startup.cs中添加引用,然后在上传文件的Action上增加[Authorize]声明,这样在点击导航[上传文件]时,直接就跳转到了登录页面。照此操作,你可以将要验证的Action或者整个类都声明上均可。

标签:11,Core,Asp,cookie,登录,Session,Cookie,cs,new
From: https://www.cnblogs.com/mushaobai/p/16880935.html

相关文章

  • .net core iis 部署时通用的web.config配置
    <?xmlversion="1.0"encoding="utf-8"?><configuration><locationpath="."inheritInChildApplications="false"><system.webServer><handlers><add......
  • 【2022.11.14】pytorch的使用相关(二)
    【2022.11.04】pytorch的初始化前言参考代码来自于:Fafa-DL/Lhy_Machine_Learning:李宏毅2021春季机器学习课程课件及作业(github.com)数据集来自于:https://github.com......
  • ASP.NET Core教程-Configuration(配置)-配置运行环境
    更新记录转载请注明出处:2022年11月14日发布。2022年11月12日从笔记迁移到博客。配置运行环境在程序启动时,会读取ASPNETCORE_ENVIRONMENT环境变量的值。如果它的......
  • 2211-13 flask模板
    第3章:模板在一般的Web程序里,访问一个地址通常会返回一个包含各类信息的HTML页面。因为我们的程序是动态的,页面中的某些信息需要根据不同的情况来进行调整,比如对登录......
  • 2022.11.13:CCPC广州
    补题传送门3题铁这把铁没有沈阳铜那么不甘心(沈阳打完之后,一星期都睡不好),看到了队伍内很多知识点的缺失,不知道在剩下一个正式赛来之前能不能弥补上(跟去年一样,做北大出的......
  • 2022.11.10_查询泸州老窖的订单信息,访问泸州那边,然后将数据写到,我这边的数据库,然
    track_no:原始单号|expresses:订单表========================新添加的东西[接口interface]==================下单API:查询老窖运单&并下单【Get】......
  • Solution Set -「NOIP Simu.」20221113
    \(\mathscr{A}\sim\)游戏  Cover:「ARC087E」Prefix-freeGame.  Tags:「A.博弈-SG函数」「A.数据结构-Trie」  想了半天(\(\ge15~\text{min}\))怎么表述一......
  • 11.13.4
    #include<stdio.h>intcz(intx,inty,inta[],intb[]);intmain(){inta[100],b[100];inti,m,n;scanf("%d",&m);for(i=0;i<m;i++){scanf("%d",&a[i]);}scanf("%d",&n);fo......
  • 2022-11-13学习内容
    1.案例-购物车-购物车列表展示1.1ShoppingCartActivity.javapackagecom.example.chapter06;importandroidx.appcompat.app.AppCompatActivity;importandroid.os.......
  • 22.11.13 CCPC 广州站 记录
    上来看A(树上DP),直观认为可做,前后拉着队友研究了两个小时,经过lcx,lgy两次hack正确性,最终基本得到答案思路,因为过于复杂和担心正确性问题不敢写。反思:1.正式比赛中不应该一开......