相关文章推荐
打盹的酸菜鱼  ·  pdf转word php - CSDN文库·  1 年前    · 
逼格高的小笼包  ·  Run a container with ...·  1 年前    · 
激动的手套  ·  2020-10-06 GIT ...·  2 年前    · 
礼貌的风衣  ·  AI谱曲 | ...·  2 年前    · 

angular监控页面关闭,页面关闭或浏览器关闭时清除token,但刷新浏览器保留token

项目要求关闭页面时,清除登录状态。onunload 和onbeforeunload 都可以做到监控页面关闭,但副作用是无法区分是关闭页面还是刷新页面。下面方法可以解决区分刷新还是关闭的问题:

import { Component, OnInit } from '@angular/core';
@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.less'],
export class AppComponent implements OnInit {
    constructor() {}
    _beforeUnload_time = 0;
    _gap_time = 0;
    ngOnInit(): void {
        window.onunload = () => {
            this._gap_time = new Date().getTime() - this._beforeUnload_time;
            if (this._gap_time <= 5) {
                localStorage.removeItem('token');
                localStorage.removeItem('userId');
        window.onbeforeunload = () => {
            this._beforeUnload_time = new Date().getTime();

当然了,此方法对ie无效

最近需要写一下前后端分离下的登录解决方案,目前大多数都采用请求头携带 Token 的形式 1、我是名小白web工作者,每天都为自己的将来担心不已。第一次记录日常开发中的过程,如有表达不当,还请一笑而过; 2、本实例开发环境前端采用 angular框架,后端采用 springboot框架; 3、实现的目的如下:   a、前端实现登录操作(无注册功能);   b、后端接收到登录信息,生成有效期限token(后端算法生成的一段秘钥),作为结果返回给前端;   c、前端在此后的每次请求,都会携带token与后端校验;   d、在token有效间内前端的请求响应都会成功, 在页面显示的候是分页现实的,当前页面只有10条数据,但是打印需要打印完整的100条数据。 并且在当前页面包含了表格之外的标题,菜单等其他元素。 后天api请求都需要带上token信息 前台页面跳转到打印页面后再跳回 1、通过缓存传递数据, 2、路由跳转到打印页面, 3、页面获取缓存数据, 4、调用浏览器打印方法, 5、操作完毕页面后退一步 调用打印页面 this.cach.setBylocal({key: key, value: data} :key: 基于令牌的Angular身份验证服务,具有拦截器和多用户支持。 与针对Rails的最有效。 :waving_hand: 该库已重命名为Angular-Token ! 请遵循。 :rocket: 查看关于演示 :sparkles: 在上了解 :wrench: 通过支持我们 使用设置Rails 通过NPM通过以下方式安装Angular-Token npm install angular-token 导入AngularTokenModule并将其添加到您的主模块中,然后使用配置调用'forRoot'函数。 确保您也导入了HttpClientModule 。 import { AngularTokenModule } from 'angular-token' ; @ NgModule ( { imports : [ ... , HttpClientModule , AngularTokenModule . forRoot ( { Angular页面传参有多种办法,根据不同用例,我举5种最常见的: PS: 在实际项目中,请参照https://github.com/johnpapa/angular-styleguide优化您的代码。 1. 基于ui-router的页面跳转传参 (1) 在AngularJS的app.js中用ui-router定义路由,比如现在有两个页面,一个页面(producers.html)放置了多个producers,点击其中一个目标,页面跳转到对应的producer页,同将producerId这个参数传过去。 .state('producers', { url: '/producers' 有关处理社交提供程序,使用LDAP / Active Directory进行企业身份验证以及用户/密码的完整示例,请查看。 如果发现错误或有功能要求,请在此存储库问题部分中报告它们。 请不要在公共GitHub问题跟踪器上报告安全漏洞。 《详细介绍了披露安全问题的过程。 该项目已获得MIT许可。 有关更多信息,请参见文件。 进入我的主页,查看更多JS的分享!我的代码有多短,本篇内容就有多短!本地存储对比:sessionStorage,关闭窗口就被清除;localStorage,一直存在直到手动删除;cookie,设置有效期,可以直接实现标题的需求今天不想多说话,直接贴上代码://判断是否支持 比如浏览器开启了隐私模式var isCookie = () = >{ return navigator.cookieE... iTesting,爱测试,爱分享最近遇见一个好玩的bug, 现象是页面刷新白屏,RootCause是Header里放的cookie太多了, 大小超出了4kb的限制.解决方法很简单,拆出一部分放到LocalStorage.问题解决了,但是个人觉得很有意思,平常司空见惯的,觉得"假大空不接地气"的概念,其实都真真切切的在项目中体现了,只不过我们熟生轻视,看不见而已.遂记录本文.面试的候经常... 而浏览器刷新执行的是beforeunload, unload, load 三个事件; 虽然刷新关闭都会走onbeforeunload与onunload,但可能因为刷新在加载新页面前内部机制还需要做一些准备工作,所以刷新事件在执行到onunload事件,用的间会比关闭事件间长。 所以,通过间差来判断浏览器刷新还是关闭浏览器执行beforeunload的候给一个开始间,执行unload的候给一个结束 在使用浏览器,同一个网站尝试登入两个不同帐号就会发现帐号相互影响,无法正常使用,无法如愿以偿。而使用浏览器的小号模式则不会出现这个问题。那么,为什么会出现串号呢?小号模式本质又是什么呢?下面便来给大家详细讲讲。HTTP在访问网站可以看到,网页的地址都是以HTTP或HTTPS开头。这个HTTP为我们多姿多彩的互联网网页世界打好了基础。HTTP/HTTPS后面便是网站的域名和网页地址,犹如家庭... 快照snapshot取到的参数是组件第一次渲染候的参数,当我们在页面中需要根据不同的url查询参数显示不同的内容,快照就不能满足我们的需要了,这候就要用ActivatedRoute服务的queryParamMap参数,queryParamMap是一个Observable对象,每次路由变化,都会emit一个(params: ParamMap)对象,然后用params.get()方法来获取参数。... * @LastEditTime: 2021-09-26 11:04:51 import { Component, DoCheck, Input, OnChanges, OnInit, SimpleChanges } from '@angular/c...