原文出自Rui Figueiredo的博客,原文链接《Secure a Web Api in ASP.NET Core》


摘要:这篇文章阐述了如何使用 Json Web Token (Jwt)方式 来配置身份验证中间件。这种方式十分适合移动App 后端等不使用cookie的后端程序。

网络上有许多资源可以教你如何保护ASP.NET Core Web应用程序。我写过一些,例如 ASP.NET Core Identity From Scratch , External Login Providers in ASP.NET Core and Facebook Authentiation with ASP.NET Core.

不过对于保护Asp.Net WebApi,网络上有用的信息似乎不多。所以在这篇博文中,我将介绍如何使用Json Web Tokens(JWT)来保护ASP.NET Core中的Web Api。我在github中有一个演示项目,你可以照着它来做。

使用token替代cookie

在一个Web应用程序中,如果你不打算使用供应外部调用(例如一个移动应用程序)的API,那么它通常使用一个cookie来表示一个已经登录的用户。

一般的流程是:用户单击登录,进入登录页面,输入有效凭证后,服务器发送给用户浏览器的响应包含一个带有加密信息的 Set-Cookie 头。

cookie会被设置上domain 例如 blinkingcaret.com,每次浏览器向这个domain发送请求时,设置在这个domain上的cookie也会被带上。

在服务器上,cookie将被解密,然后使用解密后的内容来创建用户的 Identity

如果客户端是一个浏览器,这种方式将会非常非常适合。不过当我们的客户端是一个移动应用程序时候,那就另当别论了。

JWT

我们可以使用什么来代替cookie呢?没错就是token。token也代表用户,但是当我们使用它的时候,我们不再依赖于浏览器的内置机制以及用它和cookie打交道。

我们必须明确地向服务器要一个token,我们自己将它存储在某个地方,然后在每个请求发送时手动带上它。有一些方法可以使这个尽可能简单快捷,我会在后面讨论其中的一些方法。

我将在这里讨论的token格式是JWT。

JWT代表Json Web Token。JWTtoken具有以下格式 base64-encoded-header.base64-encoded-payload.signature

一个heder的例子是

{“alg”: “HS265”,“typ”: “JWT”
}

payload包含一系列 claims,例如:

{"name": "Rui","admin": true}

最后,通过采用“base64(header).base64(payload)”创建签名,并使用头部指定的算法对签名其进行加密。例如 HMAC-SHA256。签名部分会用到一个存储在server上的密钥,这个密钥是不会发给客户端的。

下面是一个真正的JWT的例子:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoicnVpIiwic3ViIjoidGVzdCIsIm5iZiI6MTUwMzYxNDU4NSwiZXhwIjoxNTA2MDMzNzg1LCJpc3MiOiJibGlua2luZ2NhcmV0IHN0cyIsImF1ZCI6ImJsaW5raW5nY2FyZXQgYXBwIn0.F7PFoYcQXez3zV98BFKLpyON6d_1p-6IAeihZRSv0VM

你必须注意的是,JWT中包含的信息没有加密。为了获得有效payload,你只需要base64解码。你甚至可以从你的开发者工具控制台(例如在Chrome中)这样做。使用atob方法并将payload作为参数传递。你会得到解密后的JSON 。signature只能保证如果有人篡改了payload,那么signature将会失效。如果有人想成功替换有效载荷并生成有效的token,他们需要知道签名中使用的密钥,但是该密钥永远不会被发送到客户端。

所以,当你想往payload里放一些东西的时候,你一定要知道上面这些

译者注:就是不要把敏感信息放在payload里,比如:密码。

在 ASP.NET Core 中使用JWT

要在ASP.NET Core中使用JWT,我们需要知道如何手动创建JWTtoken,如何验证它们以及如何创建端点以便客户端应用程序可以获得它们。

如何创建JWTtoken

首先你需要安装nuget包System.IdentityModel.Tokens.Jwt

$ dotnet add package System.IdentityModel.Tokens.Jwt

然后创建一个密钥。我们将使用 symmetric key(译者注:对称密钥),代码如下:

var secretKey = new SymmetricSecurityKey(Endoding.UTF8.GetBytes("a secret that needs to be at least 16 characters long"));

译者注:a secret that needs to be at least 16 characters long=>一个至少需要16个字符的密码,在验证签名时还会用到。

我们的token将包含一组claims。所以让我们创建它们:

var claims = new Claim[] {   
 new Claim(ClaimTypes.Name, "John"),
    new Claims(JwtRegisteredClaimNames.Email, "john.doe@blinkingcaret.com") }

我已经使用了两种claim类型 :

  1. ClaimTypes(System.Security.Claims)

  2. JwtRegisteredClaimNames(System.IdentityModel.Tokens.Jwt)

要强调的是JwtRegisteredClaimNames包含在JWT RFC中列举的claims中。如果你打算使用不同编程语言或者框架生成的token,那么为了兼容性,你应该尽可能的使用这个。不过,有一些声明类型可以在ASP.NET中启用某些功能。例如,ClaimTypes.Name 是用户名(User.Identity.Name)的默认声明类型。另一个例子是ClaimTypes.Role,如果你在Authorize属性中使用Roles属性(例如[Authorize(Roles =“Administrator”)]),这个声明将会被检查用来确认权限。

在创建我们想要在token中编码的claims列表之后,我们可以创建token本身,代码如下:

var token = new JwtSecurityToken(  
   issuer:
"your app",  
   audience:
"the client of your app",  
   claims:
claims,  
   notBefore:
DateTime.Now,  
   expires:
DateTime.Now.AddDays(28),  
   signingCredentials:
new SigningCredentials(key, SecurityAlgorithms.HmacSha256) );

这里有一些我之前没有提到的概念,即发issue,audience和expiration dates。

译者注: 发行者,受众/听众,过期时间

发行者表示生成token的实体,在这个例子里它是ASP.NET Core Web应用程序。audience代表将要使用这些token的实体,例如 client。如果你依靠第三方创建token(不是现在所要用到的),这个issue和audience是重要的。验证token时,你可以验证issue和audience。

notBefore 和 expire 定义了 token的有效时间区间,在notBefore之后expire之前。

最后在signedCredentials中指定使用哪个安全密钥和什么算法来创建签名。在这个例子中我们使用了HMAC-SHA256。

如果你不关心issue和audience(在JWT规范中是可选的),你可以使用接受JwtSecurityHeader和JwtSecurityPayload的JwtSecurityToken的更简单的构造函数重载。不过你必须手动将expires和notBefore声明添加到有效内容中,例如:

var claims = new Claim[] {    new Claim(ClaimTypes.Name, "John"),    new Claims(JwtRegisteredClaimNames.Email, "john.doe@blinkingcaret.com"),    new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddDays(1)).ToUnixTimeSeconds()}"),    new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}")        
}var token = new JwtSecurityToken(new JwtHeader(new SigningCredentials(key, SecurityAlgorithms.HmacSha256)), new JwtPayload(claims));

请注意Exp(expires)和Nbf(notBefore)声明的值是一个Unix时间的字符串。将DateTime转换为该格式的最简单方法是使用DateTimeOffset

在创建JwtSecurityToken的实例后,实际生成token的方法是调用JwtSecurityTokenHandler实例的WriteToken方法,并将JwtSecurityToken作为参数传递:

string jwtToken = new JwtSecurityTokenHandler().WriteToken(token);

创建获取token的端点

现在我们知道如何创建我们的JWT token了,我们还需要一种方法来让客户端获得它们。最简单的方法是创建一个期望发布请求的web api controller action 接受一个Post请求,例如下面的代码:

public class TokenController : Controller{[Route("/token")][HttpPost]        public IActionResult Create(string username, string password)    {    
   if (IsValidUserAndPasswordCombination(username, password))      
         return new ObjectResult(GenerateToken(username));    
      return BadRequest();}//...

IsValidUserAndPasswordCombination中,你可以来验证用户的凭据例如使用例如ASP.NET Identity(如果你需要参考资料来学习ASP.NET Identity,你可以看这篇博客 ASP.NET Identity Core From Scratch)。

GenerateToken我们刚刚在上一节中描述过。

验证用户,并使其登陆

现在我们有了一种发行token的方法,我们还需要一种方法来验证它们。我们将使用ASP.NET Core的身份验证中间件,并将其配置为可接受JWT token。
Microsoft.AspNetCore.Authentication.JwtBearer NuGet包添加到你的项目。

$ dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

接下来打开Startup.cs并更新ConfigureServices方法:

public void ConfigureServices(IServiceCollection services){    //...services.AddAuthentication(options => {options.DefaultAuthenticateScheme = "JwtBearer";options.DefaultChallengeScheme = "JwtBearer";            }).AddJwtBearer("JwtBearer", jwtBearerOptions =>{                        jwtBearerOptions.TokenValidationParameters = new TokenValidationParameters{                            ValidateIssuerSigningKey = true,IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your secret goes here")),ValidateIssuer = true,ValidIssuer = "The name of the issuer",ValidateAudience = true,ValidAudience = "The name of the audience",ValidateLifetime = true, //validate the expiration and not before values in the tokenClockSkew = TimeSpan.FromMinutes(5) //5 minute tolerance for the expiration date};});
}

如果你不熟悉ASP.NET Core的身份验证中间件,则建议你阅读External Login Providers in ASP.NET Core。

即使是关于如何使用Google,Facebook等进行外部登陆提供程序登录,但是这篇博客也含有有关身份验证中间件如何工作的详细说明。

此外请注意,这是新的ASP.NET Core 2.0语法,其中通过ConfigureServices方法完全配置了身份验证,但概念是相同的。

译者注:External Login Providers in ASP.NET Core这篇博客在撰写的时候使用的是 Asp.Net Core 1.x。

在这个例子中更重要的是 TokenValidationParameters 类。这是你必须实例化的类,它将用来配置如何验证token。

在Startup.cs中,你需要更新Configure方法并添加身份验证中间件:

public void Configure(IApplicationBuilder app, IHostingEnvironment env){    //...app.UseAuthentication(); //needs to be up in the pipeline, before MVC//...app.UseMvc(ConfigureRoutes);//..

Client 客户端

web api客户端可以是桌面应用程序,移动设备甚至是浏览器。我将要描述的例子是Web应用程序的登录、保存token、然后使用它来执行对请求的认证。你可以在这里找到一个可以正常工作的例子。

首先,为了能够登陆,你需要将用户名和密码发送POST请求到“/ token”(或者你设置的获取token的Web Api断点)。你可以很容易地使用jQuery来做到这一点:

$.post("/token", $.param({username: "the username", password: "the password"})).done(function(token){    //save the token in local storagelocalStorage.setItem("token", token);    //...}).fail(handleError);

如果一切顺利,则可以将获得JWT token,然后你可以将其保存在某个位置,通常在Web应用程序中,我们将它保存到 local storage 中。在移动设备上则取决于你使用的平台,但它们都具有允许你保存token的功能(例如Android的SharedPreferences)。

对于上一节中的身份验证中间件,接受JWT token并将其转换为可以在控制器操作中访问的User,则该请求必须具有 Authorization header。header的值应该是“Bearer ”,然后是JWT token,例如:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1l...

尽管你可以“手动”将授权标头添加到每个请求,但通常有自动执行的方法。例如jQuery中有一个时间可以允许你在发送请求之前做一些操作,例如在这里检查是否存在 token,如果有就加到Authentication头里。

$.ajaxSetup({beforeSend: function(xhr) {       
   if (localStorage.getItem("token") !== null) {xhr.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem("token"));                      }} });  

如果你使用其他框架,也有类似的机制,例如Angular有HttpInterceptors。

最后,你只需要从本地存储中删除token即可注销:

localStorage.removeItem("token")

需要注意的一件事情是,如果客户端执行的操作需要用户进行身份验证,并且请求中没有(有效)授权标头,则服务器将返回带有401状态码的响应。该响应还将具有WWW-Authenticate:Bearer header。如果你收到这样的响应,则你可以通知用户需要验证身份。


原文:http://www.cnblogs.com/rocketRobin/p/8058760.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. JWT: 基于Token的验证

    现在SPA(Single Page Application, 单页面应用)和前后端分离已经是主流. 基于Token的验证非常适合这种构架. Difference between Token-based Auth and Cookie-based Auth 基于Cookie的验证 基于Cookie的验证是有状态的 (stateful). 前后端都要为验证保存状态: 后端要保存act…...

    2024/4/10 8:14:06
  2. SpringBoot使用JWT集成Ng-Alain

    Ng-Alain与SpringBoot整合其实本身也并不复杂,SpringBoot专注于后台业务实现,而Ng-Alain则专注于前端页面展现。以下是两者的集成步骤 spring initializr新建SpringBoot工程 下载Ng-Alain源码,并拷贝至工程的ng_alain目录下,打开…...

    2024/4/12 19:17:09
  3. 双眼皮手术 必选重庆星宸xc

    ...

    2024/4/5 21:37:30
  4. 北京双眼皮手术哪家医院最好的医院哪家好

    ...

    2024/4/12 19:16:49
  5. 上海华美双眼皮?送?帅

    ...

    2024/4/12 19:17:19
  6. 双眼皮手术高效重庆星宸

    ...

    2024/4/12 19:16:49
  7. Angular的常见基础小知识

    a. 组件Component :包括模板和组件类 (自定义的HTML元素) 其中与用户直接交互的是模板视图,而组件类则是用以维护组件的数据模型和功能逻辑 装饰器Component定义一个组件以及组件的元数据,Angular会通过这里面的属性来…...

    2024/4/5 10:10:41
  8. react 库_立即学习React库的5个理由

    react 库在2020/2021年成为JavaScript开发人员的必备技能(Must-Have Skill as a JavaScript Developer in 2020/2021) There are more than 50,000 job openings to React in the USA alone! Moreover, the demand for react developers isn’t showing any decline.仅在美国&a…...

    2024/4/12 19:17:04
  9. React系列(一) -邂逅React开发

    一. 认识React 1.1. React是什么? React是什么呢?相信每个做前端的人对它都或多或少有一些印象。 这里我们来看一下官方对它的解释:用于构建用户界面的 JavaScript 库。 我们知道对于前端来说,主要的任务就是构建用于界面&…...

    2024/4/12 19:17:14
  10. React中的组件有几种写法

    内容提要 元素与组件 Element & Component函数定义与类定义组件 Functional & Class展示与容器组件 Presentational & Container有状态与无状态组件 Stateful & Stateless受控与非受控组件 Controlled & Uncontrolled组合与继承 Composition & Inherit…...

    2024/4/5 10:10:38
  11. 我如何使用React和Typescript在freeCodeCamp中构建天气应用

    by Kelvin Mai通过凯文麦 我如何使用React和Typescript在freeCodeCamp中构建天气应用 (How I built the weather app in freeCodeCamp using React and Typescript) So I finally decided to come back to freeCodeCamp and try to finish out my Front End Development Certi…...

    2024/4/12 19:16:54
  12. 什么是React为什么使用React什么时候使用React

    什么是React? (What is React?) React.js often referred to as React or ReactJS is a JavaScript library responsible for building a hierarchy of UI components or in other words, React.js is used for building user interfaces specifically for single-…...

    2024/4/5 21:37:25
  13. []H5、React Native、Native应用对比分析

    目录(?)[-] 一React Native的出现二3款应用效果三工程方案四对比分析开发方式性能 体验更新 维护开发方式性能 体验更新 维护五综合开发方式性能 体验更新 维护王利华,vczero “存 在即合理”。凡是存在的,都是合乎规律的。任何新事物的产生总要的它的道…...

    2024/4/5 21:37:26
  14. React 中组件间实现通信 ?(包含 Redux)

    前言: 随着前端三大主流框架(Vue,React,Angular)的应用,我们应该意识到它们都有一个相同的思想,就是 组件化的思想 。我们先思考几个问题,组件化有什么好处 :可以增强代码…...

    2024/4/12 19:17:19
  15. 杭州割双眼皮到哪家医院比较好的医院

    ...

    2024/4/5 21:37:22
  16. 南昌 双眼皮 医生最好的医生

    ...

    2024/4/12 19:17:14
  17. 乌市三点定位双眼皮价格表

    ...

    2024/4/12 19:17:09
  18. 北京双眼皮手术哪家医院最好

    ...

    2024/4/12 19:17:04
  19. lua教程八----不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!

    本站文章均为 李华明Himi 原创,转载务必在明显处注明:(作者新浪微博: @李华明Himi ) 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/lua1/1314.html           ☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!              …...

    2024/4/12 19:16:49
  20. Failed to load resource: the server responded with a status of 404 (Not Found)

    1,资源路径是可以正常访问,就是改成绝对路径还是还是报:Failed to load resource: the server responded with a status of 404 (Not Found) 2,错误实例: 3,然后查看tomcat日志发现提示错误:we…...

    2024/4/5 21:37:15

最新文章

  1. 高效求解最长回文子序列:动态规划方法与C语言实现

    高效求解最长回文子序列:动态规划方法与C语言实现 问题描述解决方案伪代码C代码示例算法分析进一步讨论 在计算机科学中,回文是一种有趣的字符串,它在正序和逆序下是相同的。例如,“civic”、"racecar"和"aibohpho…...

    2024/4/16 15:34:15
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. spark on hive

    由于spark不存在元数据管理模块,为了能方便地通过sql操作hdfs数据,我们可以通过借助hive的元数据管理模块实现。对于hive来说,核心组件包含两个: sql优化翻译器,翻译sql到mapreduce并提交到yarn执行metastore&#xf…...

    2024/4/16 14:54:24
  4. llama.cpp运行qwen0.5B

    编译llama.cp 参考 下载模型 05b模型下载 转化模型 创建虚拟环境 conda create --prefixD:\miniconda3\envs\llamacpp python3.10 conda activate D:\miniconda3\envs\llamacpp安装所需要的包 cd G:\Cpp\llama.cpp-master pip install -r requirements.txt python conver…...

    2024/4/13 7:10:14
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/16 14:09:00
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/15 1:05:01
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/15 9:18:15
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/16 1:57:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/15 9:17:51
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/15 9:17:44
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/15 13:52:20
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/16 1:58:32
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/15 9:17:27
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/15 9:17:21
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/15 9:17:15
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/15 13:53:08
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/15 9:16:52
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/15 13:53:31
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/15 9:16:39
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/15 9:16:31
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/15 13:54:27
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/15 23:28:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/15 23:28:30
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/15 13:54:53
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57