当前位置: 首页 > news >正文

厦门外贸网站建设报价表阿里巴巴网站怎么做推广

厦门外贸网站建设报价表,阿里巴巴网站怎么做推广,做网站渠道,全国手工活外发加工平台目录 一#xff1a;说明 二#xff1a;传统鉴权授权的基本配置 三 #xff1a;角色配置说明 四#xff1a;策略鉴权授权 五#xff1a;策略鉴权授权Requirement扩展 总结 一#xff1a;说明 鉴权#xff1a;是指验证你是否登录#xff0c;你登录后的身份是什么。…目录 一说明 二传统鉴权授权的基本配置 三 角色配置说明 四策略鉴权授权 五策略鉴权授权Requirement扩展 总结 一说明 鉴权是指验证你是否登录你登录后的身份是什么。 授权是指验证你的权限你的身份有没有权限做这个事。 二传统鉴权授权的基本配置 Program关键代码 //表示整个应用程序调用CreateBuilder方法创建一个WebApplicationBuilder对象。 //初始化当前应用程序的管道容器 using Microsoft.AspNetCore.Authentication.Cookies;var builder WebApplication.CreateBuilder(args); //向管道容器添加注册中间件 //添加注册控制器视图中间件 builder.Services.AddControllersWithViews(); //添加注册Session中间件 builder.Services.AddSession(); //添加注册鉴权中间件 builder.Services.AddAuthentication(option {option.DefaultAuthenticateScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultChallengeScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultSignInScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultForbidScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultSignOutScheme CookieAuthenticationDefaults.AuthenticationScheme; }).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, option {//鉴权授权失败跳转登录视图option.LoginPath /Home/Login;//没有权限跳转指定视图option.AccessDeniedPath /Home/NoAuthority; }); //配置管道容器中间件构造WebApplication实例 var app builder.Build(); //判断是否是开发模式 if (!app.Environment.IsDevelopment()) {//向管道中添加中间件该中间件将捕获异常、记录异常、重置请求路径并重新执行请求。app.UseExceptionHandler(/Shared/Error);//向管道中添加用于使用HSTS的中间件该中间件添加了Strict Transport Security标头。默认值为30天app.UseHsts(); } //向管道添加Session中间件 app.UseSession(); //向管道添加用于将HTTP请求重定向到HTTPS的中间件。 app.UseHttpsRedirection(); //向管道添加为当前请求路径启用静态文件服务 app.UseStaticFiles(); //向管道添加路由配置中间件 app.UseRouting(); //向管道添加鉴权中间件 app.UseAuthentication(); //向管道添加授权中间件 app.UseAuthorization(); //向管道添加默认路由中间件 app.MapControllerRoute(name: default,pattern: {controllerHome}/{actionIndex}/{id?}); //向管道添加启动应用程序中间件 app.Run(); User关键代码 using System.ComponentModel.DataAnnotations;namespace Study_ASP.NET_Core_MVC.Models {public class User{public int UserId { get; set; }[Display(Name账号)]public string? UserName { get; set; }public string? Account { get; set; }[Display(Name 密码)]public string? UserPwd { get; set; }[DataType(DataType.EmailAddress)][Display(Name 邮箱)]public string? UserEmail { get; set;}public DateTime LoginTime { get; set; }} }Home控制器代码 using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Study_ASP.NET_Core_MVC.Models; using System.Diagnostics; using System.Security.Claims;namespace Study_ASP.NET_Core_MVC.Controllers {public class HomeController : Controller{private readonly ILoggerHomeController _logger;public HomeController(ILoggerHomeController logger){_logger logger;}/// summary/// Get请求/// 默认授权/// /summary/// returns/returns[HttpGet][Authorize]public IActionResult Index(){var user HttpContext.User;return View();}/// summary/// Get请求/// /summary/// returns/returnspublic IActionResult NoAuthority(){return View();}/// summary/// Get请求/// 登录视图/// /summary/// returns/returns[HttpGet]public IActionResult Login(){return View();}/// summary/// Post请求/// 登录视图/// /summary/// param nameUserName/param/// param nameUserPwd/param/// returns/returns[HttpPost]public async TaskIActionResult Login(string UserName,string UserPwd){if (VinCente.Equals(UserName) 123456.Equals(UserPwd)){var claims new ListClaim(){new Claim(UserId,1),new Claim(ClaimTypes.Role,Admin),new Claim(ClaimTypes.Role,User),new Claim(ClaimTypes.Name,${UserName}---来自于Cookies),new Claim(ClaimTypes.Email,$VinCente123.com),new Claim(Password,UserPwd),new Claim(Account,Administrator),new Claim(Role,admin),new Claim(QQ,7257624)};ClaimsPrincipal userPrincipal new ClaimsPrincipal(new ClaimsIdentity(claims, UserMessage));HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, userPrincipal, new AuthenticationProperties{//过期时间30分钟ExpiresUtc DateTime.UtcNow.AddSeconds(30)}).Wait();var user HttpContext.User;return base.Redirect(/Home/Index);}else{base.ViewBag.Message 账号或密码错误;}return await Task.FromResultIActionResult(View());}} } 视图代码 using Study_ASP.NET_Core_MVC.Models;model User {ViewBag.Title 登录; }h2登录/h2 div classrowdiv classcol-md-8section idloginFormusing (Html.BeginForm(Login, Home, new { sid 123, Account VinCente },FormMethod.Post, true, new { class form-horizontal, role form })){Html.AntiForgeryToken()hr /Html.ValidationSummary(true)div classmb-3 rowHtml.LabelFor(m m.UserName, new { class col-sm-1 col-form-label })div classcol-md-6Html.TextBoxFor(m m.UserName, new { class form-control, placeholder请输入账号 })/div/divdiv classmb-3 rowHtml.LabelFor(m m.UserPwd, new { class col-md-1 control-label })div classcol-md-6Html.PasswordFor(m m.UserPwd, new { class form-control,placeholder请输入密码 })/div/divdiv classmb-3 rowdiv classcol-md-offset-2 col-md-6button typesubmit classbtn btn-primary mb-3登录/buttonbase.ViewBag.Message/div/div}/section/div /div 三 角色配置说明 标记多个角色授权控制器代码 /// summary/// Get请求/// 默认授权/// 授权给角色为Admin的用户,可以访问/// 授权给角色为User的用户可以访问/// 授权给角色为Tracher的用户不可以访问VinCente用户没有Teacher授权/// 同时授权给用户多个角色Roles时必须同时满足角色Roles才可以访问/// /summary/// returns/returns[HttpGet]//[Authorize][Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Roles Admin)]//[Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Roles User)]//[Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Roles Teacher)]public IActionResult Index(){var user HttpContext.User;return View();} 标记单个角色授权控制器代码 /// summary/// Get请求/// 默认授权/// 授权给角色为Admin和User的用户,包含其中一个角色可以访问/// 授权给角色为User和Teacher的用户包含其中一个角色可以访问/// 授权给角色为Tracher和Admin的用户包含其中一个角色可以访问/// 授权给角色为System和Teacher的用户不包含其中一个角色不可以访问/// /summary/// returns/returns[HttpGet]//[Authorize][Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Roles Admin,User)]//[Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Roles User,Teacher)]//[Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Roles Teacher,Admin)]//[Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Roles System,Teacher)]public IActionResult Index(){var user HttpContext.User;return View();} 四策略鉴权授权 Program关键代码 //表示整个应用程序调用CreateBuilder方法创建一个WebApplicationBuilder对象。 //初始化当前应用程序的管道容器 using Microsoft.AspNetCore.Authentication.Cookies; using System.Security.Claims;var builder WebApplication.CreateBuilder(args); //向管道容器添加注册中间件 //添加注册控制器视图中间件 builder.Services.AddControllersWithViews(); //添加注册Session中间件 builder.Services.AddSession(); //添加注册鉴权授权中间件 builder.Services.AddAuthentication(option {option.DefaultAuthenticateScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultChallengeScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultSignInScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultForbidScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultSignOutScheme CookieAuthenticationDefaults.AuthenticationScheme; }).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, option {//鉴权授权失败跳转登录视图option.LoginPath /Home/Login;//没有权限跳转指定视图option.AccessDeniedPath /Home/NoAuthority; }); //添加注册策略鉴权授权中间件 builder.Services.AddAuthorization(option {//注册一个为RolePolicy的策略授权option.AddPolicy(RolePolicy, policyBuilder {//必须包含某个角色//policyBuilder.RequireRole(Teacher);//必须包含Account条件//policyBuilder.RequireClaim(Account);//必须包含指定条件policyBuilder.RequireAssertion(context {return context.User.HasClaim(c c.Type ClaimTypes.Role) context.User.Claims.First(c c.Type.Equals(ClaimTypes.Role)).Value Admin context.User.Claims.Any(c c.Type ClaimTypes.Name);});//policyBuilder.AddRequirements(new QQEmailRequirement());}); }); //配置管道容器中间件构造WebApplication实例 var app builder.Build(); //判断是否是开发模式 if (!app.Environment.IsDevelopment()) {//向管道中添加中间件该中间件将捕获异常、记录异常、重置请求路径并重新执行请求。app.UseExceptionHandler(/Shared/Error);//向管道中添加用于使用HSTS的中间件该中间件添加了Strict Transport Security标头。默认值为30天app.UseHsts(); } //向管道添加Session中间件 app.UseSession(); //向管道添加用于将HTTP请求重定向到HTTPS的中间件。 app.UseHttpsRedirection(); //向管道添加为当前请求路径启用静态文件服务 app.UseStaticFiles(); //向管道添加路由配置中间件 app.UseRouting(); //向管道添加鉴权中间件 app.UseAuthentication(); //向管道添加授权中间件 app.UseAuthorization(); //向管道添加默认路由中间件 app.MapControllerRoute(name: default,pattern: {controllerHome}/{actionIndex}/{id?}); //向管道添加启动应用程序中间件 app.Run(); 控制器代码 using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Study_ASP.NET_Core_MVC.Models; using System.Diagnostics; using System.Security.Claims;namespace Study_ASP.NET_Core_MVC.Controllers {public class HomeController : Controller{private readonly ILoggerHomeController _logger;public HomeController(ILoggerHomeController logger){_logger logger;}/// summary/// Get请求/// 策略授权/// /summary/// returns/returns[HttpGet][Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Policy RolePolicy)]public IActionResult Index(){var user HttpContext.User;return View();}/// summary/// Get请求/// /summary/// returns/returnspublic IActionResult NoAuthority(){return View();}/// summary/// Get请求/// 登录视图/// /summary/// returns/returns[HttpGet]public IActionResult Login(){return View();}/// summary/// Post请求/// 登录视图/// /summary/// param nameUserName/param/// param nameUserPwd/param/// returns/returns[HttpPost]public async TaskIActionResult Login(string UserName, string UserPwd){if (VinCente.Equals(UserName) 123456.Equals(UserPwd)){var claims new ListClaim(){new Claim(UserId,1),new Claim(ClaimTypes.Role,Admin),new Claim(ClaimTypes.Role,User),new Claim(ClaimTypes.Name,${UserName}---来自于Cookies),new Claim(ClaimTypes.Email,$VinCente123.com),new Claim(Password,UserPwd),new Claim(Account,Administrator),new Claim(Role,admin),new Claim(QQ,7257624)};ClaimsPrincipal userPrincipal new ClaimsPrincipal(new ClaimsIdentity(claims, UserMessage));HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, userPrincipal, new AuthenticationProperties{//过期时间30分钟ExpiresUtc DateTime.UtcNow.AddSeconds(30)}).Wait();var user HttpContext.User;return base.Redirect(/Home/Index);}else{base.ViewBag.Message 账号或密码错误;}return await Task.FromResultIActionResult(View());}} } 五策略鉴权授权Requirement扩展 IUserService代码 namespace Study_ASP.NET_Core_MVC.Models {public interface IUserService{public bool Validata(string userId, string qq);} }UserService代码 namespace Study_ASP.NET_Core_MVC.Models {public class UserService: IUserService{public bool Validata(string userId, string qq){//在这里去链接数据库去校验这个QQ是否正确return true;}} }QQEmailRequirement代码 using Microsoft.AspNetCore.Authorization;namespace Study_ASP.NET_Core_MVC.Models {public class QQEmailRequirement:IAuthorizationRequirement{} }QQHandler代码 using Microsoft.AspNetCore.Authorization;namespace Study_ASP.NET_Core_MVC.Models {public class QQHandler:AuthorizationHandlerQQEmailRequirement{//初始化构造函数private IUserService _UserService;public QQHandler(IUserService userService){this._UserService userService;}protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, QQEmailRequirement requirement){if (context.User.Claims.Count() 0){return Task.CompletedTask;}string userId context.User.Claims.First(c c.Type UserId).Value;string qq context.User.Claims.First(c c.Type QQ).Value;if (_UserService.Validata(userId, qq)){//验证通过context.Succeed(requirement);}return Task.CompletedTask;}} }Program关键代码 //表示整个应用程序调用CreateBuilder方法创建一个WebApplicationBuilder对象。 //初始化当前应用程序的管道容器 using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; using Study_ASP.NET_Core_MVC.Models; using System.Security.Claims;var builder WebApplication.CreateBuilder(args); //向管道容器添加注册中间件 //添加注册控制器视图中间件 builder.Services.AddControllersWithViews(); //添加注册Session中间件 builder.Services.AddSession(); //添加注册鉴权授权中间件 builder.Services.AddAuthentication(option {option.DefaultAuthenticateScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultChallengeScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultSignInScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultForbidScheme CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultSignOutScheme CookieAuthenticationDefaults.AuthenticationScheme; }).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, option {//鉴权授权失败跳转登录视图option.LoginPath /Home/Login;//没有权限跳转指定视图option.AccessDeniedPath /Home/NoAuthority; }); //添加注册策略鉴权授权中间件 builder.Services.AddAuthorization(option {//注册一个为RolePolicy的策略授权option.AddPolicy(RolePolicy, policyBuilder {//必须包含某个角色//policyBuilder.RequireRole(Teacher);//必须包含Account条件//policyBuilder.RequireClaim(Account);//必须包含指定条件policyBuilder.RequireAssertion(context {return context.User.HasClaim(c c.Type ClaimTypes.Role) context.User.Claims.First(c c.Type.Equals(ClaimTypes.Role)).Value Admin context.User.Claims.Any(c c.Type ClaimTypes.Name);});policyBuilder.AddRequirements(new QQEmailRequirement());}); }); //添加注册策略鉴权授权中间件外部文件 builder.Services.AddTransientIUserService, UserService(); builder.Services.AddTransientIAuthorizationHandler, QQHandler(); //配置管道容器中间件构造WebApplication实例 var app builder.Build(); //判断是否是开发模式 if (!app.Environment.IsDevelopment()) {//向管道中添加中间件该中间件将捕获异常、记录异常、重置请求路径并重新执行请求。app.UseExceptionHandler(/Shared/Error);//向管道中添加用于使用HSTS的中间件该中间件添加了Strict Transport Security标头。默认值为30天app.UseHsts(); } //向管道添加Session中间件 app.UseSession(); //向管道添加用于将HTTP请求重定向到HTTPS的中间件。 app.UseHttpsRedirection(); //向管道添加为当前请求路径启用静态文件服务 app.UseStaticFiles(); //向管道添加路由配置中间件 app.UseRouting(); //向管道添加鉴权中间件 app.UseAuthentication(); //向管道添加授权中间件 app.UseAuthorization(); //向管道添加默认路由中间件 app.MapControllerRoute(name: default,pattern: {controllerHome}/{actionIndex}/{id?}); //向管道添加启动应用程序中间件 app.Run(); 控制器代码 using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Study_ASP.NET_Core_MVC.Models; using System.Diagnostics; using System.Security.Claims;namespace Study_ASP.NET_Core_MVC.Controllers {public class HomeController : Controller{private readonly ILoggerHomeController _logger;public HomeController(ILoggerHomeController logger){_logger logger;}/// summary/// Get请求/// 策略授权/// /summary/// returns/returns[HttpGet][Authorize(AuthenticationSchemes CookieAuthenticationDefaults.AuthenticationScheme, Policy RolePolicy)]public IActionResult Index(){var user HttpContext.User;return View();}/// summary/// Get请求/// /summary/// returns/returnspublic IActionResult NoAuthority(){return View();}/// summary/// Get请求/// 登录视图/// /summary/// returns/returns[HttpGet]public IActionResult Login(){return View();}/// summary/// Post请求/// 登录视图/// /summary/// param nameUserName/param/// param nameUserPwd/param/// returns/returns[HttpPost]public async TaskIActionResult Login(string UserName, string UserPwd){if (VinCente.Equals(UserName) 123456.Equals(UserPwd)){var claims new ListClaim(){new Claim(UserId,1),new Claim(ClaimTypes.Role,Admin),new Claim(ClaimTypes.Role,User),new Claim(ClaimTypes.Name,${UserName}---来自于Cookies),new Claim(ClaimTypes.Email,$VinCente123.com),new Claim(Password,UserPwd),new Claim(Account,Administrator),new Claim(Role,admin),new Claim(QQ,7257624)};ClaimsPrincipal userPrincipal new ClaimsPrincipal(new ClaimsIdentity(claims, UserMessage));HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, userPrincipal, new AuthenticationProperties{//过期时间30分钟ExpiresUtc DateTime.UtcNow.AddSeconds(30)}).Wait();var user HttpContext.User;return base.Redirect(/Home/Index);}else{base.ViewBag.Message 账号或密码错误;}return await Task.FromResultIActionResult(View());}} } 总结 使用传统鉴权授权的基本配置验证用户是否登录如果当前没有用户信息直接跳转至登录视图在Program文件中配置登录之后可以正常访问被标记为[Authorize]的控制器或控制器方法由于控制器代码中HttpPost的Login方法中写明用户角色。搭配角色使用在控制器或控制器方法上标记可以访问该控制器或方法的角色除了当前标记的角色外都不可以访问该控制器或控制器方法。搭配策略使用在特殊的控制器或控制器上标记可以访问该控制器或方法的策略名称符合该策略的用户可以访问。不能访问的用户直接跳转至Home控制器下的NoAuthority方法中的视图提醒用户没有权限访问该方法。通过使用AddRequirements扩展可以自定义验证用户鉴权授权。
http://www.yayakq.cn/news/1618/

相关文章:

  • 免费做祝福网站在线网站建设哪个正规
  • 网站群建设公司开发软件怎么开发
  • 山西网站制作平台苏州网站设计师招聘信息
  • 批量网站访问检测河南省工程招标信息网
  • 宽屏网站js校园局域网的设计与实现
  • 中山专业网站制作哪里可以免费下载ppt模板
  • 农林网站建设深圳it外包公司有哪些
  • 济南网站建设制作设计徐州建站网站模板
  • 网站建设最简单的教程视频教程提供邯郸做移动网站
  • 西安网站建设哪家好一些WordPress万级数据优化
  • 励志做的很好的网站市场营销策划案的范文
  • 沈阳的网站制作公司哪家好搜索引擎广告投放
  • 网站做app开发wordpress视频教程式
  • 网站备案号链接做盈利网站怎么备案
  • 深圳做营销网站的公司小米路由wordpress
  • 网站公司建设网站建设规划书电商
  • 做自己的网站不是免费的镇海区建设交通局网站进不去了
  • 做特卖网站有什么网站asp网站转wap网站
  • 网站制作公司咨询网站制作公司沈阳网站建设培训班
  • 网站维护包含哪些内容月夜直播免费完整版观看
  • 高端网站建设成都中秋节网页设计代码
  • 开一个网站多少钱屯济宁做网站公司
  • 有没有教做衣服的网站做网站看网页效果
  • 如何建设教育信息网站怎样做美瞳网站
  • 网站下载工具没有域名能做网站吗
  • 哪个网站可以做线上翻译赚钱微信代运营是什么意思
  • 做网站策划书吧云谷 网站建设
  • 江西建设职业技术学院迎新网站中文域名注册 .网站
  • 澄迈住房和城乡建设局网站手机版网页制作
  • 网店网站建设哪家北京撒网站设计