介绍

本文是关于ASP系列文章的第四篇。网络核心身份:

ASP。NET Core标识:启动asp.net CoreNET Core标识:建立一个web项目和标识数据库NET Core标识:用户注册,登录和注销功能使用ASP。asp.net Core mvc asp.net。angular 4:使用JWT令牌进行用户身份验证angular 4:使用外部提供者进行用户身份验证

在上一篇文章中,我们在项目中创建了一个API控制器(TokenController)来生成JWT令牌,以及另一个API控制器(GreetingController),它支持持有者身份验证方案。在本文中,我们将开发一个Angular 4应用程序来实现基于该API的用户身份验证。

我不会详细介绍这个Angular应用程序,因为互联网上到处都是很棒的Angular教程。因为每天都有更好的教程出现,所以放一些好的Angular教程链接根本不值得。

本文的完整代码可在此回购https://github.com/ra1han/aspnet- coreidentity中的Demo 4文件夹中获得。

准备控制器

我们在上一步创建的API控制器对于我们的Angular应用来说已经很好了。我们唯一要做的就是在。net项目中添加对交叉原点的支持,这样Angular应用就会运行在不同的端口上。

隐藏,复制Code[EnableCors(“CORSPolicy”)]
[Route(“api/[controller]”)]
public class TokenController : Controller
{


}

[EnableCors(“CORSPolicy”)]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[Route(“api/[controller]”)]
public class GreetingController : Controller
{


}

准备Angular应用程序

我们在这个项目中使用Angular 4。

该项目有两个组件—用于登录页面的登录组件和用于向经过身份验证的用户显示问候消息的Home组件。

该项目还有两个服务—AuthenticationService用于根据所提供的凭证获取令牌,UserService用于使用令牌获取问候消息。

我还使用RxJS来处理http请求。这是一个很棒的工具,我强烈建议花些时间好好学习它。

整个项目结构是这样的:

准备身份验证服务(Authentication . Service .ts)

该服务有三种方法——登录、注销和isUserLoggedIn。

登录方法向服务器发送post请求并获取jwt令牌。

隐藏,复制Codelogin(username: string, password: string): Observable {

var headers = new Headers();
headers.append('Content-Type', 'application/json; charset=utf-8');return this.http.post(Constant.ApiRoot + Constant.TokenService,{ Email: username, Password: password },{ headers: headers }).map((response: Response) => {let token = response.json() && response.json().token;if (token) {this.token = token;return true;}else {return false;}});

}

准备用户服务(User . Service .ts)

该服务只有一个方法——getGreeting。

这里重要的一点是这个方法访问。/api/问候语终点,这是一个安全的终点。为了访问它,我们必须将承载令牌添加到请求头中。

隐藏,复制CodegetGreeting(): Observable {
let headers = new Headers({ ‘Authorization’: 'Bearer ’ + this.auhenticationService.token });
let options = new RequestOptions({ headers: headers });

return this.http.get(Constant.ApiRoot + Constant.GreetingService, options).map((response: Response) => response.text());

}

使用应用程序

要使用这个应用程序,首先要运行。net应用程序,然后运行Angular应用程序。要运行Angular应用程序,只需在命令提示符下进入Angular项目文件夹,运行npm start。

angular应用程序会在用户未登录时加载登录页面。

如果我们放入在上一步中创建的用户的凭据并单击Login按钮,用户将被登录并转发到主页。

本文转载于:http://www.diyabc.com/frontweb/news17311.html

Angular 4:使用JWT令牌进行用户身份验证相关推荐

  1. Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证

    Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证 参考文章: (1)Springboot token令牌验证解决方案 在SpringBoot实现 ...

  2. 用户身份验证配置需考虑的因素

    你现在要建立一个系统.无论系统的功能如何,用户身份验证都是始终存在的一个功能.实现它看起来应该很简单--只需"拖动"一些现成的身份验证模块,或使用一些基本选项(例如 Spring ...

  3. 使用JWT进行跨域身份验证

    传统用户身份验证 Internet服务无法与用户身份验证分开.一般过程如下: 用户向服务器发送用户名和密码. 验证服务器后,相关数据(如用户角色,登录时间等)将保存在当前会话中. 服务器向用户返回se ...

  4. 用户身份验证最佳做法清单

    用户身份验证是每个Web应用程序共享的功能. 我们已经实现了很多次,所以很早以前就应该完善它. 然而,错误无时无刻不在发生. 造成这种情况的部分原因是,可能出问题的清单很长. 您可能会错误地存储密码, ...

  5. 身份证验证 校验码_用户身份验证最佳做法清单

    身份证验证 校验码 用户身份验证是每个Web应用程序共享的功能. 我们已经实施了很多次了,所以早就应该完善它了. 然而,错误无时无刻不在. 造成这种情况的部分原因是,可能出错的事情列表很长. 您可能会 ...

  6. springSecurity-oauth2默认用户身份验证转换器( 方法上的注解权限authorities)

    springSecurity-oauth2默认用户身份验证转换器 package com.xy.tasty.mgr.security;import com.xy.common.verify.Asser ...

  7. 使用token进行用户身份验证

    使用token进行用户身份验证 参考文章:https://blog.csdn.net/u014799292/article/details/88365086 写的很详细,具体讲解了token的原理. ...

  8. php路由器怎么登录认证,PHP用户身份验证,如路由器登录

    当我们尝试登录路由器时,如何在php中创建用户身份验证. 当我输入网址,例如www.example.com/portal时,应该有一个提示,如上面的图像询问用户名和密码. 这是什么类型的身份验证.如何 ...

  9. IdentityServer4 使用OpenID Connect添加用户身份验证

    使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...

最新文章

  1. mvc ajax提交html标签,asp.net-mvc – 如何使用ajax get或post在带有参数的mvc中将数据从View传递到Controller...
  2. copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
  3. 解决小米手机无法收到开机广播的问题
  4. Android社招最全面试题,妈妈再也不用担心我找工作了!
  5. nodeJs配置相关以及JSON.parse
  6. WindowsServer 2008 Ad建立ftp隔离用户
  7. HEOI 2017 游记
  8. html怎么给边框改样式,html里面怎么设置边框?html边框样式设置方法
  9. 喀什大学计算机科学与技术学院在哪个校区,2021年喀什大学有几个校区,大一新生在哪个校区...
  10. [Yii2] 前台用户与后台用户分离
  11. c#通过网络链接打印PDF
  12. OLED原理、时序和操作+自己源码程序
  13. MFCC和语谱图的关系
  14. python封装举例_卷1:第14章 Python打包工具
  15. 极客日报:阿里回应1000万成立“元境生生”;马斯克一年上了75次热搜;微软.NET中文官网正式上线
  16. 喜欢的歌,老歌居多,呵呵,怀旧,改不了的毛病
  17. java.io.IOException: Expected at least 2 bytes
  18. PTGUI 720 制作全景图
  19. sql怎么实现线性排序_如何在SQL中实现排序间接
  20. 3D 渲染的 5 种方式

热门文章

  1. FREE TIME,FREE DEMURRAGE和FREE DETENTION的区别研究参考
  2. LCP 18. 早餐组合
  3. 初中计算机教师资格证内容,教师资格证考试大纲——《信息技术学科知识与教学能力》(初级中学)...
  4. AVD模拟器再次运行提示Could not open 'C:\Users\Shinelon\.android\avd\1.avd/cache.img':
  5. 使用 vscode 安装配置 clang-format(代码格式化)
  6. 脑电分析系列[MNE-Python-21]| Python协方差矩阵处理脑电数据
  7. 详解TCP三次握手的首次握手协议数据
  8. 专业版MDB-RS232适配器在自动售货机中的作用
  9. 对话平安科技CTO方国伟:平安云差异化在哪?
  10. Type-c接口显示器方案(支持任天堂游戏机投屏)