分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

ASP.NET Core 2.0 Cookie Authentication

发布时间:2023-09-06 01:30责任编辑:郭大石关键词:.NETCookie
using Microsoft.AspNetCore.Authentication.Cookies;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.AspNetCore.Http;using Microsoft.Extensions.DependencyInjection;using System;using System.Threading.Tasks;namespace Fiver.Security.Authentication{ ???public class Startup ???{ ???????public void ConfigureServices( ???????????IServiceCollection services) ???????{ ???????????services.AddAuthentication("FiverSecurityScheme") ???????????????????.AddCookie("FiverSecurityScheme", options => ???????????????????{ ???????????????????????options.AccessDeniedPath = new PathString("/Security/Access"); ???????????????????????options.Cookie = new CookieBuilder ???????????????????????{ ???????????????????????????//Domain = "", ???????????????????????????HttpOnly = true, ???????????????????????????Name = ".Fiver.Security.Cookie", ???????????????????????????Path = "/", ???????????????????????????SameSite = SameSiteMode.Lax, ???????????????????????????SecurePolicy = CookieSecurePolicy.SameAsRequest ???????????????????????}; ???????????????????????options.Events = new CookieAuthenticationEvents ???????????????????????{ ???????????????????????????OnSignedIn = context => ???????????????????????????{ ???????????????????????????????Console.WriteLine("{0} - {1}: {2}", DateTime.Now, ?????????????????????????????????"OnSignedIn", context.Principal.Identity.Name); ???????????????????????????????return Task.CompletedTask; ???????????????????????????}, ???????????????????????????OnSigningOut = context => ???????????????????????????{ ???????????????????????????????Console.WriteLine("{0} - {1}: {2}", DateTime.Now, ?????????????????????????????????"OnSigningOut", context.HttpContext.User.Identity.Name); ???????????????????????????????return Task.CompletedTask; ???????????????????????????}, ???????????????????????????OnValidatePrincipal = context => ???????????????????????????{ ???????????????????????????????Console.WriteLine("{0} - {1}: {2}", DateTime.Now, ?????????????????????????????????"OnValidatePrincipal", context.Principal.Identity.Name); ???????????????????????????????return Task.CompletedTask; ???????????????????????????} ???????????????????????}; ???????????????????????//options.ExpireTimeSpan = TimeSpan.FromMinutes(10); ???????????????????????options.LoginPath = new PathString("/Security/Login"); ???????????????????????options.ReturnUrlParameter = "RequestPath"; ???????????????????????options.SlidingExpiration = true; ???????????????????}); ???????????services.AddMvc(); ???????} ???????//public void ConfigureServices( ???????// ???IServiceCollection services) ???????//{ ???????// ???services.AddAuthentication("FiverSecurityScheme") ???????// ???????????.AddCookie("FiverSecurityScheme", options => ???????// ???????????{ ???????// ???????????????options.AccessDeniedPath = new PathString("/Security/Access"); ???????// ???????????????options.LoginPath = new PathString("/Security/Login"); ???????// ???????????}); ???????// ???services.AddMvc(); ???????//} ???????public void Configure( ???????????IApplicationBuilder app, ???????????IHostingEnvironment env) ???????{ ???????????app.UseDeveloperExceptionPage(); ???????????app.UseAuthentication(); ???????????app.UseMvcWithDefaultRoute(); ???????} ???}}
using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;using Fiver.Security.Authentication.Models.Security;using System.Security.Claims;using System.Collections.Generic;using Microsoft.AspNetCore.Authentication;using System;namespace Fiver.Security.Authentication.Controllers{ ???public class SecurityController : Controller ???{ ???????public IActionResult Login(string requestPath) ???????{ ???????????ViewBag.RequestPath = requestPath ?? "/"; ???????????return View(); ???????} ???????[HttpPost] ???????public async Task<IActionResult> Login(LoginInputModel inputModel) ???????{ ???????????if (!IsAuthentic(inputModel.Username, inputModel.Password)) ???????????????return View(); ???????????????????????// create claims ???????????List<Claim> claims = new List<Claim> ???????????{ ???????????????new Claim(ClaimTypes.Name, "Sean Connery"), ???????????????new Claim(ClaimTypes.Email, inputModel.Username) ???????????}; ???????????????????????// create identity ???????????ClaimsIdentity identity = new ClaimsIdentity(claims, "cookie"); ???????????????????????// create principal ???????????ClaimsPrincipal principal = new ClaimsPrincipal(identity); ???????????// sign-in ???????????await HttpContext.SignInAsync( ???????????????????scheme: "FiverSecurityScheme", ???????????????????principal: principal, ???????????????????properties: new AuthenticationProperties ???????????????????{ ???????????????????????//IsPersistent = true, // for ‘remember me‘ feature ???????????????????????//ExpiresUtc = DateTime.UtcNow.AddMinutes(1) ???????????????????}); ???????????return Redirect(inputModel.RequestPath ?? "/"); ???????????//return RedirectToAction("Index", "Home"); ???????} ???????public async Task<IActionResult> Logout(string requestPath) ???????{ ???????????await HttpContext.SignOutAsync( ???????????????????scheme: "FiverSecurityScheme"); ???????????return RedirectToAction("Login"); ???????} ???????public IActionResult Access() ???????{ ???????????return View(); ???????} ???????#region " Private " ???????private bool IsAuthentic(string username, string password) ???????{ ???????????return (username == "james" && password == "bond"); ???????} ???????#endregion ???}}

ASP.NET Core 2.0 Cookie Authentication

原文地址:http://www.cnblogs.com/Javi/p/8027491.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved