Asp.net core认证

  1. 在nuget包中引入Microsoft.AspNetCore.Idnetity.EntityFrameworkCore
    Microsoft…EntityFrameworkCore
    Microsoft…EntityFrameworkCore.InMemory
    在这里插入图片描述
  2. 数据源
    在根目录下创建Data目录
    在这里插入图片描述
    类中的代码
publicclassAppdataContext:IdentityDbContext
    {
publicAppdataContext(DbContextOptions<AppdataContext> options):base(options)
        {

        }
    }

IdentityDbContext:Entity Framework数据库上下文用于身份识别的基类。
3. Startup配置文件

publicclassStartup
    {
publicvoidConfigureServices(IServiceCollection services)
        {
//内存数据库
services.AddDbContext<AppdataContext>(config=> {
config.UseInMemoryDatabase("Memory");
            });
//addidentity注册服务密码配置
services.AddIdentity<IdentityUser, IdentityRole>(config=> {
config.Password.RequiredLength = 2;//长度
config.Password.RequireDigit = false;//数字
config.Password.RequireNonAlphanumeric = false;
config.Password.RequireUppercase = false;
            })
.AddEntityFrameworkStores<AppdataContext>()
.AddDefaultTokenProviders();
services.ConfigureApplicationCookie(config=> {
config.Cookie.Name = "tmc";
config.LoginPath = "/home/login";
            });
services.AddControllersWithViews();

        }

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
publicvoidConfigure(IApplicationBuilder app, IWebHostEnvironmentenv)
        {
if (env.IsDevelopment())
            {
app.UseDeveloperExceptionPage();
            }
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
            {
endpoints.MapDefaultControllerRoute();
            });
        }
    }
4.	HomeController
5.	publicclassHomeController:Controller
6.	    {
7.	//UserManager包含在Microsoft.AspNetCore.Identity中
8.	privateUserManager<IdentityUser> _userManager;
9.	//SignInManager用于判断用户登录、登出等
10.	privateSignInManager<IdentityUser> _signinManager;
11.	
12.	publicHomeController(UserManager<IdentityUser>userManager,
13.	SignInManager<IdentityUser>signInManager)
14.	        {
15.	            _userManager = userManager;
16.	            _signinManager = signInManager;
17.	        }
18.	publicIActionResultindex()
19.	        {
20.	returnView();
21.	        }
22.	        [Authorize]
23.	publicIActionResultsecret()
24.	        {
25.	returnView();
26.	        }
27.	publicIActionResultlogin()
28.	        {
29.	
30.	returnView();
31.	        }
32.	publicIActionResultregister()
33.	        {
34.	returnView();
35.	        }
36.	        [HttpPost]
37.	publicasync Task<IActionResult>login(stringum,stringpss)
38.	        {
39.	var user =await  _userManager.FindByNameAsync(um);
40.	if (user != null)
41.	            {
42.	//登录
43.	varsigninresult= await _signinManager.PasswordSignInAsync(user,pss,false,false);
44.	if (signinresult.Succeeded)
45.	                {
46.	                    Redirect("secret");
47.	                }
48.	            }
49.	return Redirect("index");
50.	        }
51.	        [HttpPost]
52.	publicasync Task<IActionResult>register(string um, stringpss)
53.	        {
54.	var user = newIdentityUser
55.	            {
56.	UserName = um,
57.	                Email=""
58.	            };
59.	var result = await _userManager.CreateAsync(user,pss);
60.	Console.WriteLine(result.Succeeded);
61.	foreach(variinresult.Errors)
62.	            {
63.	Console.WriteLine(i.Description);
64.	            }
65.	
66.	if (result.Succeeded)
67.	            {
68.	//sign here
69.	varsigninresult = await _signinManager.PasswordSignInAsync(user, pss, false, false);
70.	if (signinresult.Succeeded)
71.	                {
72.	return Redirect("secret");
73.	                }
74.	            }
75.	
76.	return Redirect("index");
77.	        }
78.	publicasync Task<IActionResult>logout()
79.	        {
80.	await _signinManager.SignOutAsync();
81.	return Redirect("index");
82.	        }
83.	    }

5.根据action添加视图
在这里插入图片描述
6.index和secret中保持默认

<h1>login</h1>
<formaction="/home/login"method="post">
<inputtype="text"name="um"value=""/>
<inputtype="text"name="pss"value=""/>
<inputtype="submit"name="n"value="登录"/>
</form>

<h1>register</h1>
<formaction="/home/register"method="post">
<inputtype="text"name="um"value=""/>
<inputtype="text"name="pss"value=""/>
<inputtype="submit"name="n"value="注册"/>
</form>

7.运行结果

在这里插入图片描述
未登录状态跳转到
在这里插入图片描述
注册
在这里插入图片描述
重新登录
能访问到secret页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值