16.1 用auth0服务 实现用登录和管理 使用auth版本的2个大坑。
这是三周内容,实现用户登录和管理
回到master分支
切换到 han分支 更新一下 然后工作
开始工作写代码了
安装2个angular端的auth0的lib,也可不安装,后边有不安装的做法
不安装的方法是
我们知道我们所有的client端的代码或者js文件,都是通过咱们用ng bulid --watch 时刻生成的 public目录下index.html加载运行的
但是呢?我们是不能够直接修改index.html的他是angular-cli帮我们生成的(用ng build --watch命令)
那我们去哪里修改呢?
我们当然是oj-client/src/ 下 index.html
2个都可以,区别就是一个下载到本地安装,另外一个是用在线的。都可以。我们用安装的
这样我们就有所有的依赖,利用这个lib(包)我们就可以用auth0
下一步就是实现login in 功能(和以前我们的写法一样 , 建立service)
angular-cli就帮我们生成2个文件
然后就从官网上 复制粘贴模板
必须声明才可以
如何让其他component使用这个service呢?
服务有了 就要用了 因为login那个按钮在navbar哪里 所以
我们去页面看看
然后我们试试运行一下
点一下sign in 试试
说明cookie记录了
发现是可以的。
官网jwt.io将token贴入会返回3部分信息
但是
有2个大坑,虽然说继承auth很简单,但是呢,因为api版本和用法的不同,会出现很多问题,解决方法就是版本对应。
比如,我们在用比较新的版本时(10.8),
我们发现等我们在具体页面登录的时候
登录后 跳转到了 首页 而不是登录时具体的页面
这是很不理想的!
问题二
另外一个坑是
当我们在具体页面刷新以后登录 会报错,callback地址改变不再是localhost:3000 而是变成 localhost:3000/problems/1
但是这个地址是我们没有添加到callback地址的,你会说,我们添加就好了,但是如果是localhost:3000/problems/2
你还要添加一次 3 你还要添加 这是我们不能接受的
其实是API版本问题
怎么修正呢?
你可以选择就的版本
修改client端下的index.html
如果你是用CDN那个方式的话就改具体的版本号
新API为什么这样呢?
留个坑 看文档吧
还是改回老版本吧 且用cdn的方式
//version : use cdn in index.html by <script src="https://cdn.auth0.com/lock-9.0.min.js"></script>
import { Injectable } from '@angular/core';
import {tokenNotExpired} from "angular2-jwt";declare var Auth0Lock:any;@Injectable(/*{providedIn: 'root'}*/)
export class AuthService {clientId ='Kpohf0lVYOVRyK2-QjArHjqCq6kSdelz';domain = 'bittiger.auth0.com';lock = new Auth0Lock(this.clientId,this.domain,{});constructor() {
/* this.lock.on("authenticated",(authResult)=>{localStorage.setItem('id_token',authResult.idToken);});*/}public login(){/*this.lock.show();*/this.lock.show((error :string, profile:Object , id_token:string ) => {if(error){console.log(error);}else {localStorage.setItem('profile',JSON.stringify(profile));localStorage.setItem('id_token',id_token);}});}public logout(){localStorage.removeItem('id_token');localStorage.removeItem('profile');}public authenticated(){return tokenNotExpired();}
}
老版本9.0的写法 不是在construction里面判断了,而是改成,在login里面 调用callback function (三个参数),
我们在登录以后
应该在navbar显示名字
还是用cdn吧
https://auth0.com/docs/libraries/lock/v9
变成异步的登录
那么profile怎么弄呢(我们页面显示具体用户名,而不是写死的变量。字符串)
我们去navbar
这个nickname是在我们浏览器按F12点
但是我们要写成异步的,因为,他是个http请求,请求的是auth0这个官网,不然会报null的错误
我们想
这个是固定 的 就不用数据绑定了
转载于:https://www.cnblogs.com/PoeticalJustice/p/9322968.html
16.1 用auth0服务 实现用登录和管理 使用auth版本的2个大坑。相关推荐
- 阿里云公布IP地理位置库抄袭调查结果;华为云电脑8月16日将停止服务和运营;Chrome 92发布|极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- WEB服务在单点登录系统中的应用研究
WEB服务在单点登录系统中的应用研究 转载于:https://blog.51cto.com/hnoas/105573
- Spring Cloud入门-Sentinel实现服务限流、熔断与降级(Hoxton版本)
文章目录 Spring Cloud入门系列汇总 摘要 Sentinel简介 安装Sentinel控制台 创建sentinel-service模块 限流功能 创建RateLimitController类 ...
- 中国重汽微服务管理_springcloud微服务架构实战:商家管理微服务设计
商家管理微服务设计 商家管理微服务是一个独立的RESTAPI应用,这个应用通过接口服务对外提供商家信息管理.商家权限管理和菜单资源管理等方面的功能. 商家管理微服务开发在merchant-restap ...
- linux查看vnc服务加密修复,VNC远程管理Linux服务器安全指导
在开源领域,远程遥控技术的代表就是VNC了.VNC(Virtual Network Computer,虚拟网络计算机)是一套由AT&T实验室开发的可操控远程计算机的软件.根据主控端与被控端的不 ...
- Unbound服务的安装与运行管理
一.Unbound服务的安装与运行管理 1.获取Unbound软件包 RHEL7.x自带了Bind和Unbound两种DNS服务包,Unbound是红帽公司推荐使用的DNS服务器.目前,虽然Bind在 ...
- 传奇服务器包裹元宝数量显示,GOM传奇服务端测试记录元宝,传奇GM版本库测试区记录元宝数量教程...
GOM传奇服务端测试记录元宝,传奇GM版本库测试区记录元宝数量教程 本文出处:网游动力作者:本站发布时间:2019-09-01阅读次数: [@main] #IF #ACT OPENMERCHANTBI ...
- IP-guard如何映射到外网登录访问管理
终端安全管理(endpoint security management)是一种保护网络安全的策略式方法,它需要终端设备在得到访问网络资源的许可之前遵从特定的标准.随着企业信息化发展,终端安全管理系统需 ...
- 微服务服务器集群Session管理演进史
点击上方"JavaEdge",关注公众号 设为"星标",好文章不错过! 应用服务器的高可用设计主要基于服务无状态这一特性,但事实上,业务总 是有状态: 在电商网 ...
最新文章
- Office CVE-2017-8570 远程代码执行漏洞复现
- golang中的方法
- 项目范围管理:WBS
- c编程:输入一个数字n,则n代表n行,每行输入2个数字a,b计算每行的a+b问题。
- SQL-Server使用点滴(一-数据对象篇)
- debian 升级linux内核,Debian8升级内核到4.5
- 问答系统设计的一些思考
- java中的文本框_java里的JTextField文本框怎么设置大小?
- Android开发笔记(十二)测量尺寸与下拉刷新
- 微软神操作!Web 版 VS Code 来了!
- C/C++ 取整函数
- [原创].Net中绑定到DataView的问题
- IBM AI“新药发现”项目停止市场拓展
- 解决master[remote rejected] pre-receive hook declined
- linux磁盘坏道测试,Linux磁盘坏道检测
- CSS篇十六——盒子模型之边框
- 计算机检索自考,计算机信息检索02139自考资料(25页)-原创力文档
- 跟我学在高德地图——标注我的位置
- 2021-08-15nginx访问502,日志报错:connect() to 127.0.0.1:180 failed (13: Permission denied)解决
- JAVA通过xml模板生成DOCX文档
热门文章
- python中pickle模块的用法_Python中json模块和pickle模块的简单介绍(附示例)
- java 解析csv 乱码_Java采用opencsv解析csv文件以及解析中文乱码问题
- java父系调用子系,获取usb设备父系或子代
- 简历中该怎么写自己了解html,我用HTML写简历
- weblogic内存溢出linux,解决weblogic内存溢出有关问题
- 自己写的TimeHelper javal时间工具
- Windows 7 上安装 Mapnik
- Asp.Net验证控件和表达式测试题
- alibaba Fastjson的JOSN解析库 -
- C#项目评审提问问题集锦