前端用户关闭浏览器时,向后端发送请求【页面退出事件】

  • 在需要检测退出的页面上添加如下语句,来监测页面退出的事件

    <script type="text/javascript">

        //监测页面退出事件
         window.onunload = function() {

           var url = "/project/user/demo1001";
           $.post(url,null,function(resultData){
               alert("----1111---");
           });

        };

    </script>
  • 在后端我用的是SSM框架,在Controller中方法如下,很简单

    @RequestMapping("demo1001")
    public String demo1001(HttpServletRequest request){

        HttpSession session = request.getSession();
        System.out.println("=====================");
        System.out.println("");
        System.out.println("");
        System.out.println("");
        System.out.println("");
        System.out.println("");
        System.out.println("进入了 demo1001 退出方法");

//	session.removeAttribute("user");
//	session.invalidate();//清空!!!!!
        return null ;
    }

 

在Flask应用中,为了使用JWT(JSON Web Tokens)保护所有视图函数并限制其有效期为30秒,你可以按照以下步骤操作: 1. 安装依赖库: 首先,你需要安装`Flask-Extended`库,可以使用pip进行安装: ``` pip install flask-jwt-extended ``` 2. 初始化JWT扩展: 在Flask应用初始化文件(如app.py)中,配置JWT: ```python from flask_jwt_extended import JWTManager, create_access_token app = Flask(__name__) app.config['JWT_SECRET_KEY'] = 'your_secret_key' # 设置JWT密钥 jwt = JWTManager(app) ``` 3. 注册蓝图并保护视图: 对于每个需要保护的视图函数,你可以使用装饰器`@jwt_required()`,例如: ```python @app.route('/protected', methods=['GET']) @jwt_required() def protected_view(): # 视图业务逻辑... return {'message': 'You are authenticated'} ``` 这将检查请求头中的JWT是否有效。 4. 创建和刷新令牌: 在用户登录,生成并返回带有过期间的访问令牌: ```python @app.route('/login', methods=['POST']) def login(): username = request.form.get('username') password = request.form.get('password') if verify_credentials(username, password): # 自定义验证逻辑 access_token = create_access_token(identity=username, expires_delta=datetime.timedelta(seconds=30)) return jsonify(access_token=access_token) return jsonify(error='Invalid credentials'), 401 ``` 5. 清除token(注销): 可以创建一个路由来处理登出逻辑,在这里清除用户session和数据库中的token记录,通常在接收到特定信号(如用户点击“登出”按钮或浏览器关闭执行: ```python @app.route('/logout', methods=['POST']) def logout(): # 清理session和数据库中的token # ... resp = jsonify(logged_out=True) resp.delete_cookie('access_token') # 如果有设置cookie的话 return resp, 200 ``` 6. 前端实现: 在前端,每次发送请求前,从cookie或localStorage中取出JWT并在headers中添加`Authorization: Bearer <your_token>`。当用户登出,删除存储的token,并在下次请求不再包含它。 现在前端部分需要修改的地方包括: - 添加一个保存JWT到本地存储的功能,比如在`axios.interceptors.request.use`钩子里加上处理JWT的逻辑。 - 在注销操作后,清理本地存储的JWT和清除浏览器的cookie。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值