用户获取

Android 应用之安全开发

前提是你 提交于 2019-11-29 19:11:04
原文链接:https://www.jianshu.com/p/3b22859b2677 大佬:“这个 APP 破解下,可以兼容客户已出货的产品” 我:“这个不合适吧” 大佬:“这个客户对我们很重要” 我:“好吧” 然后,就是通过反编译某 APP ,分析蓝牙交互协议,在新的 APP 中去兼容已出货的设备,达到无缝对接。 –这种场景在开发中还是比较经常碰到的。 一、引言 随着移动互联网向社会生活的各个领域渗透,APP 的使用越来越广泛。但 Android 系统由于其开源的属性,市场上针对开源代码定制的 ROM 参差不齐(特别中国区域),在系统层面的安全防范和易损性都不一样,Android 应用市场对 APP 的审核相对 iOS 来说也比较宽泛,市场上一些主流的 APP 虽然多少都做了一些安全防范,但由于大部分 APP 不涉及资金安全,所以对安全的重视程度不够;而且由于安全是门系统学科,绝大部分 APP 层的开发人员缺乏对 APP 安全意识及措施,导致被有心者有机可乘。 Android 开发是当前最火的话题之一,但很少开发者会讨论这个领域的安全问题,除了专业从业者,但移动应用安全隐患也给发展带来了挑战。 开发团队通常将精力集中在产品设计、功能实现、用户体验和系统效率等方面,而很少考虑安全问题; 与一切都是集中管理的 iOS 相比,Android 提供了一种开放的环境,在获得了灵活性

微信小程序实时获取用户经纬度( 附源码 )

怎甘沉沦 提交于 2019-11-29 05:51:10
注意,使用这个功能之前手机得先打开位置信息。 现在app.json配置 { "pages": [ "pages/map/map", "pages/index/index", "pages/register/register", "pages/logs/logs" ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle": "black" }, "permission": { "scope.userLocationBackground": { "desc": "位置信息将用于展示所在地区" } }, "requiredBackgroundModes": ["location"], "sitemapLocation": "sitemap.json" } 页面js代码 getUserLocation() { wx.getSetting({ success(res) { console.log(res) if (res.authSetting['scope.userLocationBackground']) { wx

.Net之微信小程序获取用户UnionID

青春壹個敷衍的年華 提交于 2019-11-29 01:07:50
前言:   在实际项目开发中我们经常会遇到账号统一的问题,如何在不同端或者是不同的登录方式下保证同一个会员或者用户账号唯一(便于用户信息的管理)。这段时间就有一个这样的需求,之前有个客户做了一个微信小程序商城(店主端的),然后现在又要做一个会员购物端的小程序商场。首先之前用户登录凭证都是使用微信openid来做的唯一标识,而现在客户需求是要做到用户在会员端小程序跳转到到店主端小程序假如之前该用户微信是在店主端审核通过的用户则不需要在进行资料提交审核操作,直接登录。所以,所以我们使用了UnionID来进行关联,如下是我们现在项目的基本流程(画的丑莫见怪)。 说说UnionID机制:   如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。 官方UnionID机制详细说明: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 微信开放平台绑定小程序流程: 登录 微信开放平台 — 管理中心 — 小程序 — 绑定小程序

根据登陆用户获取相应权限菜单

╄→гoц情女王★ 提交于 2019-11-28 21:56:54
通过登录人userId获取对应角色 再获取对应角色下的权限菜单(用户角色关联表,角色菜单关联表) 1,构建递归获取父节点方法 private void getUserMenus(HashMap<String, SysMenu> parentAndChildren, SysMenu sysMenu) { if (!parentAndChildren.containsKey(sysMenu.getRowId())) { parentAndChildren.put(sysMenu.getRowId(), sysMenu); } if (!parentAndChildren.containsKey(sysMenu.getParentId())) { SysMenu p = sysMenuMapper.find(sysMenu.getParentId()); if (p != null) { getUserMenus(parentAndChildren, p); } } } 2,递归获取子节点 private void getTreeStructure(SysMenuDto root, List<SysMenu> orgs) { for (SysMenu org : orgs) { if (org.getParentId().equals(root.getId())) {

获取登录用户的ip地址

有些话、适合烂在心里 提交于 2019-11-28 03:46:21
/** * 获取登录用户的IP地址 * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } if ("0:0:0:0:0:0:0:1".equals(ip)) { ip = "127.0.0.1"; } if (ip.split(",").length > 1) { ip = ip

微信小程序获取用户openid (Nodejs)

不羁岁月 提交于 2019-11-27 19:39:58
微信小程序需要获取用户的openid来作为用户的唯一身份认证,用来存储和更新对应客户信息。 以Node后台为例, 前台发出请求后,后台转发访问对应的微信接口来获取openid. 1. 小程序前端请求: getUserInfo: function(e) { app.globalData.userInfo = e.detail.userInfo this.setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) wx.login({ success: res => { app.globalData.usercode = res.code //1. 获取usercode作为后面获取openid的参数 } }) var id=null id=wx.getStorageSync('openid') if (!id) { wx.request({ url: getOpenId, //set in config .js //2.后台API method: "POST", data: { js_code: app.globalData.usercode, }, success(res) { var openId = res.data.openid var sessionKey = res.data.session_key console

优雅之道

ぃ、小莉子 提交于 2019-11-27 10:13:35
案例一 现象描述: 不完善的写法: thisName != null && thisName.equals(name); 更完善的写法: (thisName == name) || (thisName != null && thisName.equals(name)); 建议方案: Objects.equals(name, thisName); 案例二 现象描述: !(list == null || list.isEmpty()); 建议方案: import org.apache.commons.collections4.CollectionUtils; CollectionUtils.isNotEmpty(list); 主要收益 函数式编程,业务代码减少,逻辑一目了然; 通用工具函数,逻辑考虑周全,出问题概率低。 拆分超大函数 当一个函数超过80行后,就属于超大函数,需要进行拆分。案例一:每一个代码块都可以封装为一个函 每一个代码块必然有一个注释,用于解释这个代码块的功能。 如果代码块前方有一行注释,就是在提醒你——可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。如果函数有一个描述恰当的名字,就不需要去看内部代码究竟是如何实现的。 现象描述: // 每日生活函数 public void liveDaily() { // 吃饭 // 吃饭相关代码几十行 //

Flask中session实现原理

♀尐吖头ヾ 提交于 2019-11-27 00:42:45
前言 flask_session是flask框架实现session功能的一个插件,用来替代flask自带的session实现机制,flask默认的session信息保存在cookie中,不够安全和灵活。 flask的session机制 session是用来干什么的呢?由于http协议是一个无状态的协议,也就是说同一个用户第一次请求和第二次请求是完全没有关系的,但是现在的网站基本上有登录使用的功能,这就要求必须实现有状态,而session机制实现的就是这个功能。 实现的原理: 用户第一次请求后,将产生的状态信息保存在session中,这时可以把session当做一个容器,它保存了正在使用的所有用户的状态信息;这段状态信息分配了一个唯一的标识符用来标识用户的身份,将其保存在响应对象的cookie中;当第二次请求时,解析cookie中的标识符,拿到标识符后去session找到对应的用户的信息。 简单使用 from flask import Flask,session app = Flask(__name__) @app.route('/test1/') def test(): session.setdefault('name', 'xiaoming') return 'OK' if __name__ == '__main__': app.run(host='127.0.0.1',

睡多多APP注册收不到验证码

懵懂的女人 提交于 2019-11-26 22:33:25
问: 睡多多APP注册收不到验证码怎么办? 答: 有2种解决办法。 一是让用户先下载睡多多APP,在APP尝试获取验证码,因为有时候是浏览器拦截导致的,在APP里面就没问题。 二是推荐人帮助注册,推荐人用自己的手机输入用户的手机号,获取验证码,用户发验证码给推荐人,然后推荐人帮助完成注册,然后用户再登录APP修改密码即可。 原文链接: http://shuidd.vip/6631 http://shuiduoduo.cc/z/5387.html 来源: https://www.cnblogs.com/mfenwiki/p/11334058.html

Ionic4.x、Cordova Android 检测应用版本号、服务器下载文件以及实现App自动升级、安装

折月煮酒 提交于 2019-11-26 20:58:27
Android App 升级执行流程 1 、获取本地版本号 2 、请求服务器获取服务器版本号 3 、本地版本和服务器版本不一致提示升级,弹窗提示用户是否更新 4 、用户确定升级,调用文件传输方法下载 apk 文件 5 、监听下载进度 6 、下载完成打开 Apk 进行安装 注意 :在 i os 中没法直接下载安装,如果版本不一致直接跳转到 Ios 应用对应的应用市场就即可。 自动升级 APP 需要的插件 插件名称 插件地址 App Version cordova-plugin-app-version https://ionicframework.com/docs/native/app-version/ File Opener cordova-plugin-file-opener2 https://ionicframework.com/docs/native/file-opener/ File Transfer cordova-plugin-file-transfer https://ionicframework.com/docs/native/file-transfer/ File cordova-plugin-file https://ionicframework.com/docs/native/file/ 在 app.module.ts 引入注入 import {