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的错误

我们想





这个是固定 的 就不用数据绑定了
16.1 用auth0服务 实现用登录和管理 使用auth版本的2个大坑。的更多相关文章
- FTP服务—三种登录类型的配置方法
目录 一.部署 二.配置vsftpd 1.匿名用户登录配置 2.系统用户登录配置 3.虚拟用户登录配置 1. 创建虚拟用户名单文件 2. 生成虚拟用户口令认证文件 3. 创建FTP根目录及虚拟用户映射 ...
- 微服务架构下分布式Session管理
转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:“加群 姓名 公司 职位 微信号”. 一.应用架构变 ...
- Unbound服务的安装与运行管理
一.Unbound服务的安装与运行管理 1.获取Unbound软件包 RHEL7.x自带了Bind和Unbound两种DNS服务包,Unbound是红帽公司推荐使用的DNS服务器.目前,虽然Bind在 ...
- 基于cookie的用户登录状态管理
cookie是什么 先来花5分钟看完这篇文章:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies 看完上文,相信大家对cookie已经有 ...
- 纳税服务系统【信息发布管理、Ueditor、异步信息交互】
需求分析 我们现在来到了纳税服务系统的信息发布管理模块,首先我们跟着原型图来进行需求分析把: 一些普通的CRUD,值得一做的就是状态之间的切换了.停用和发布切换. 值得注意的是:在信息内容中,它可以带 ...
- django的权限认证:登录和退出。auth模块和@login_required装饰器
在settings.py中配置LOGIN_URL参数: # 用户访问带有(@login_required)标签的页面(view)时,如果没有登录,就会跳转到LOGIN_URL(即登陆url). LOG ...
- Uni-app登录态管理(vuex)
应用中,保持登录状态是常见需求,本文讲解使用uni-app框架时如何保持用户登录状态. 即:初次进入应用为未登录状态------->登录---------->关闭应用,再次打开------ ...
- 配置SSH服务使用证书登录Ubuntu服务器
根据项目要求,需要将项目迁移到Linux系统上,作为测试,选用的是阿里云服务器,1核CPU,1G内存(没错就是这么穷),操作系统Ubuntu 16.04 64位.当然其实如果使用阿里云服务器其实是不需 ...
- thinkphp通行证服务,验证登录,注销登录
<?php /** * 通行证服务 */ class PassportService extends Service { /** * 验证用户或者管理员是否已登录 * @return boole ...
随机推荐
- Delphi 常用语句
1.屏蔽Float浮点数出错: Set8087CW(Longword($133f)); 2.Idhttp参数设置: FIdhttp := TIdHTTP.Create ...
- Cloudera HUE大数据可视化分析
下载版本 cdh版本 http://archive-primary.cloudera.com/cdh5/cdh/5/ 我们下载这个 这个是我下载好的 我们解压一下 下载需要的系统包 yum insta ...
- 在javascript中toString 和valueOf的区别
1.toString()方法:主要用于Array.Boolean.Date.Error.Function.Number等对象转化为字符串形式.日期类的toString()方法返回一个可读的日期和字符串 ...
- 入坑机器学习?听听MIT在读博士的AI心得
随着人工智能技术的火热,越来越多的年轻学者正准备投身其中,开启自己的研究之路.和所有其他学科一样,人工智能领域的新人总会遇到各种各样的难题,其中不仅有研究上的,也有生活方面的.MIT EECS 在读博 ...
- Tomcat启动报错:Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies
错误代码如下: Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for ...
- java list按照 对象 指定多个字段属性进行排序
ListUtils.Java---功能类 package PjectUtils; import java.lang.reflect.Field; import java.text.NumberForm ...
- 公式for TinyMCE 编辑器@ cnblogs.com
编辑器截图: 行内公式:\( f(x,y,z) = 3y^2 z \left( 3 + \frac{7x+5}{1 + y^2} \right) \) 行间公式:\\( f(x,y,z) = 3 ...
- 【转】AD常用端口
通常在域环境中我们有部分设备在DMZ区时,就需要知道AD的相关端口.在此提供给各位: 用户登录与验证身份时会用到的连接端口用户登录时会用到以下的服务,因此如果用户的计算机与域控制器之间被防火墙隔开,就 ...
- 关于阿里云图片识别接口的demo
服务器处理过程 $host = "https://dm-53.data.aliyun.com"; $path = "/rest/160601/ocr/ocr_vehicl ...
- react-native android 报错 error calling Appregistry.runApplication
解决了权限问题以为就没问题了,但是进来就红屏了,报错信息如下: 解决了,懒得截图了 error calling Appregistry.runApplication 这个问题也找了很久,开始找到 ht ...