精华内容
下载资源
问答
  • 业务描述:前端仅访问一下接口,后端java获取code以及用户的数据(重点:进行重定向,response.sendRedirect(url)); 网上大部分是前端获取code传给后端进行操作,结合自己的场景,后端直接获取code进行数据的获取 1....

    业务描述:前端仅访问一下接口,后端java获取code以及用户的数据(重点:进行重定向,response.sendRedirect(url));

    网上大部分是前端获取code传给后端进行操作,结合自己的场景,后端直接获取code进行数据的获取

    1.搭建微信登录工具类:

    package util;
    
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    
    /**
     * 微信登录工具类
     *
     * @description:
     * @projectName:alumni
     * @see:util
     * @author:lgb
     * @createTime:2021/8/27 17:02
     * @version:1.0
     */
    public class WeChatLoginUtil {
    
        final Boolean flag = false;
    
        /**
         * description 1.获取用户的临时code
         * param [appid, redirectUrl]
         * return java.lang.String
         * authorlgb
         * createTime 2021/8/27 17:30
         **/
        public static String getUserUathUrl(String appid, String redirectUrl) throws UnsupportedEncodingException {
            StringBuffer getcodeUrl = new StringBuffer()
                    .append("https://open.weixin.qq.com/connect/oauth2/authorize")
                    .append("?appid=" + appid)
                    .append("&redirect_uri=" + URLEncoder.encode(redirectUrl, "utf-8"))
                    .append("&response_type=code")
                    .append("&scope=snsapi_userinfo")
                    .append("&state=" + System.currentTimeMillis())
                    .append("#wechat_redirect");
    
            return getcodeUrl.toString();
        }
    
        /**
         * description  2.获取用户的openid和access_token
         * param [appid, appSecret, code]
         * return java.lang.String
         * author
         * createTime 2021/8/27 17:30
         **/
        public static String getBaseAccessTokenUrl(String appid, String appSecret, String code) throws UnsupportedEncodingException {
            StringBuffer baseAccessTokenUrl = new StringBuffer()
                    .append("https://api.weixin.qq.com/sns/oauth2/access_token")
                    .append("?appid=" + appid)
                    .append("&secret=" + appSecret)
                    .append("&code=" + code)
                    .append("&grant_type=authorization_code");
    
            return baseAccessTokenUrl.toString();
        }
    
        /**
         * description  3.根据openid 获取用户的信息
         * param [accessToken, openid]
         * return java.lang.String
         * author 
         * createTime 2021/8/27 17:31
         **/
        public static String getBaseUserInfoUrl(String accessToken, String openid) {
            StringBuffer baseUserInfoUrl = new StringBuffer()
                    .append("https://api.weixin.qq.com/sns/userinfo")
                    .append("?access_token=" + accessToken)
                    .append("&openid=" + openid)
                    .append("&lang=zh_CN");
            return baseUserInfoUrl.toString();
        }
    
        /**
         * description 4检验授权凭证(access_token)是否有效
         * param [openid, accessToken]
         * return java.lang.String
         * author 
         * createTime 2021/11/29 10:16
         **/
        public static String checkAccessToken(String openid, String accessToken) {
            StringBuffer stringBuffer = new StringBuffer().append(" https://api.weixin.qq.com/sns/auth")
                    .append("?access_token=" + accessToken)
                    .append("&openid=" + openid);
            return stringBuffer.toString();
        }
    
        /**
         * description 微信小程序登录,通过code获取session_key和openid
         * param [appid, secret, code]
         * return java.lang.String
         * author 
         * createTime 2021/8/30 10:15
         **/
        public static String getCode2Session(String appid, String secret, String code) {
            StringBuffer code2Session = new StringBuffer()
                    .append("ttps://api.weixin.qq.com/sns/jscode2session")
                    .append("?appid=" + appid)
                    .append("&secret=" + secret)
                    .append("&js_code=" + code)
                    .append("&grant_type=authorization_code");
            return code2Session.toString();
        }
    
    
    }
    
    

    2.构建微信配置类

    package mobile.config;
    
    import lombok.Data;
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    /**
     * @description: 微信相关信息配置
     * @projectName:alumni
     * @see:mobile.config
     * @author:
     * @createTime:2021/8/30 9:31
     * @version:1.0
     */
    @Component
    @Data
    public class WxOpenLoginConfig implements InitializingBean {
    
        //微信登录的appid,应用唯一标识
        @Value("${wx.open.app_id}")
        private String appId;
        // 微信登录的应用密钥AppSecret
        @Value("${wx.open.app_secret}")
        private String appSecret;
    
        //重定向地址,使用urlEncode对链接进行处理
        @Value("${wx.open.redirect_url}")
        private String redirectUrl;
        //token
        @Value("${wx.open.token}")
        private String appToken;
        //消息加解密秘钥
        @Value("${wx.open.encodingAESKey}")
        private String encodingAESKey;
    
    
        //微信小程序登录录的appid,应用唯一标识
        @Value("${wx.applet.app_id}")
        private String appletAppId;
        // 微信小程序登录的应用密钥AppSecret
        @Value("${wx.applet.app_secret}")
        private String appletAppSecret;
    
    
        public static String WX_OPEN_APP_ID;
        public static String WX_OPEN_APP_SECRET;
        public static String WX_OPEN_REDIRECT_URL;//回调地址
    
    
        public static String WX_APPLET_APP_ID;
        public static String WX_APPLET_APP_SECRET;
    
    
        @Override
        public void afterPropertiesSet() throws Exception {
            WX_OPEN_APP_ID = appId;
            WX_OPEN_APP_SECRET = appSecret;
            WX_OPEN_REDIRECT_URL = redirectUrl;
            WX_APPLET_APP_ID = appletAppId;
            WX_APPLET_APP_SECRET = appletAppSecret;
    
        }
    }
    
    
    

    3.重点来啦,代码的实现

    3.1重定向

    /**
         * description  微信授权登录接口
         * param []
         * return common.enums.ResultVO
         * author 
         * createTime 2021/11/22 16:28
         **/
        @GetMapping("/WxLogin")
        public ResultVO WxLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {
        response.sendRedirect(WeChatLoginUtil.getUserUathUrl(WxOpenLoginConfig.WX_OPEN_APP_ID, WxOpenLoginConfig.WX_OPEN_REDIRECT_URL));//(openid和微信回调地址/WxCallback)进行重定向
      return new ResultVO(ResultCode.SUCCESS, WeChatLoginUtil.getUserUathUrl(WxOpenLoginConfig.WX_OPEN_APP_ID, WxOpenLoginConfig.WX_OPEN_REDIRECT_URL));
            }
            return new ResultVO(ResultCode.ERROR, "请重新尝试");
        }
    
    

    3.1进行微信的回调

    /*
         *
         * description  微信公众号回调地址
         * param [code, state]
         * return javax.annotation.Resource
         * author
         * createTime 2021/8/27 17:42
         *
         */
        @GetMapping("/WxCallback")
        public ResultVO WxCallback(HttpServletRequest request) throws Exception {
            String code = request.getParameter("code");
            String errcode = request.getParameter("errcode");
            String state = request.getParameter("state");
            if (StringUtils.isBlank(code)) {//返回的code为空
                return new ResultVO(ResultCode.VALIDATE_FAILED);
            }
            //获取openid和access_token
            String accesstokenInfo = HttpClientUtil.get(util.WeChatLoginUtil.getBaseAccessTokenUrl(WxOpenLoginConfig.WX_OPEN_APP_ID, WxOpenLoginConfig.WX_OPEN_APP_SECRET, code));
            if (StringUtils.isNotBlank(JSON.parseObject(accesstokenInfo).getString("errcode"))) {
                return new ResultVO(ResultCode.ERROR, "请重新尝试");
            }
            JSONObject jsonObject = JSONObject.parseObject(accesstokenInfo);
            String accessToken = jsonObject.getString("access_token");
            String openid = jsonObject.getString("openid");
            String s = HttpClientUtil.get(WeChatLoginUtil.checkAccessToken(openid, accessToken));//检验授权凭证(access_token)是否有效
            if (JSON.parseObject(s).getString("errcode").equals("0")) {
                // 3根据openid获取该用户的信息
                String resultInfo = HttpClientUtil.get(util.WeChatLoginUtil.getBaseUserInfoUrl(accessToken, openid));
                if (StringUtils.isNotBlank(errcode)) {
                    return new ResultVO(ResultCode.FAILED, errcode);
                }
                ResultVO ret = getRet(request, resultInfo);//将用户数据存入到数据库
                return ret;
            }
            return new ResultVO(ResultCode.SERVER_FAILED, "请重新尝试");
        }
    

    3.3之后拿到数据你就可以进行相关业务的操作啦!

    参考微信官方文档微信登录官方文档
    参考链接部分实现参考

    展开全文
  • 1.后台获取当前登录用户: LoginUser loginUser = tokenService.getLoginUser(); SysUser sysUser=loginUser.getSysUser(); 2.前端文件上传,在任意.vue前端位置写上 <el-upload ref="upload1" :limit="1" ...

    1.后台获取当前登录用户:
    LoginUser loginUser = tokenService.getLoginUser();
    SysUser sysUser=loginUser.getSysUser();

     

    2.前端文件上传,在任意.vue前端位置写上

              <el-upload
                ref="upload1"
                :limit="1"
                accept=".jpg, .png"
                :action="upload1.url"
                :headers="upload1.headers"
                :file-list="upload1.fileList"
                :on-progress="handleFileUploadProgress1"
                :on-success="handleFileSuccess1"
                :auto-upload="false">
                <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
                <el-button style="margin-left: 10px;" size="small" type="success" :loading="upload1.isUploading" 

    展开全文
  • 前端 <field name="domain">[('create_uid', '=', uid)]</field> 后端 self.env.uid self.env.user.id

    前端

    <field name="domain">[('create_uid', '=', uid)]</field>

    后端

    self.env.uid
    self.env.user.id
    展开全文
  • 管理后台 saveOrUpdateReq.setUserId(SecurityUtils.getUser().getId().longValue()); app saveReq.setUserId(RequestHolder.getCurrentUser().getId());

    管理后台
    saveOrUpdateReq.setUserId(SecurityUtils.getUser().getId().longValue());
    app
    saveReq.setUserId(RequestHolder.getCurrentUser().getId());

    展开全文
  • 前端实现代码 // 登录 wx.login({ success: function (res)... // 3获取用户信息 encryptedData iv 解密出 unionId wx.getUserInfo({ success: function (respon) { console.log("encryptedData:" + respon.
  • 首先,在页面中包含相应的标记库(我将使用JSP进行示例)然后你只需要使用这些标签来查询权限,当然还有数据.要查看用户是否具有足够的权限:Some Admin Stuff如果用户...Logout 编辑要查询当前经过身份验证的用户,您...
  • public class IPUtil {/*** 获取ip* @param request* @return*/public static String getIp(HttpServletRequest request) {if (request == null)return "";String ip = request.getHeader("X-Requested-For");if ...
  • 微信小程序的openId是用户在该小程序上的唯一标识 获取方式如下: wx.login({ success: res => { // 获取用户的 code 之后:res.code console.log("用户的code:" + res.code);
  • vue element admin从后端获取数据动态生成路由 登录、获取角色什么这些简单,按照后台调用vuex再调用接口就完事了。 以上截图的例子与后端接口有关,没有接口前端可以也可以自行模拟。先看后端接口返回的数据格式是...
  • Once the user is logged in and i have the access token, how to get the logged in user's user email id and Username using the access token in the app? Anybody please provide me a solution to get the ...
  • 后端搭建好后第一件事就是用户登录认证,简单实现微信小程序登录认证1.user 模型use laravel\passport\hasapitokens; 新增use hasapitokens, notifiable;protected $fillable = ['id','name','email','email_...
  • html结构 js结构 后端返回的数据中包含id值, 点击按钮获取这个id值, 并将这个id值作为参数传给后端做相应操作
  • 若依(RuoYi)如何获取用户登录信息?

    千次阅读 2021-11-25 18:10:13
    // 获取当前的用户信息 User currentUser = ShiroUtils.getSysUser(); // 获取当前的用户名称 String userName = currentUser.getUserName(); ②可在子模块中使用 // 获取当前的用户名称 String userName = ...
  • 1.需要获取当前登录用户id,用来查询当前用户的购物车中的商品信息 操作: 可以在登录接口,做登录验证时将查到的用户信息保存在session中。 /** * 用户登录 * @param parm * @return */ @...
  • @Autowired private RedisTemplate redisTemplate; String token = WebUtil.getRequest().getHeader("token"); User user = (User) redisTemplate.opsForValue().get(token);
  • 在项目中可能会遇到需要权限验证的需求,这个时候往往是后端获取当前登录用户ID而非前端传过来,所以在接口编写的过程中我们可能会在Service层业务逻辑处理的时候来获取,这个习惯是不建议的,因为其它服务可能需要...
  • 第一步:通过code获取access_token,unionid和openid,请求方式GET,请求示例: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=aut
  • I want to build an api in java to solve the security image problem occurred while moving one page to another page in any ... How can i get the session id and cookies so that i can post it with th...
  • 关于token生成、认证部分的操作本文不会涉及,也就是默认token是经过合法性校验的,本文将重点放在之后进行的业务相关处理,即基于token获取用户信息的方式(部分方式需要基于SpringBoot)。 Level1:手动获取 通常...
  • 用户断开连接的代码是这样写的var WebSocketServer = require('D:/0.ProgramFiles/2.Devel/4.NodeJs/node_modules/ws').Server;var wss = new WebSocketServer({port: 8888});var userList = [];wss.on('connec...
  • Facebook登录-后端

    2021-01-26 17:35:48
    //获取用户的那些信息 public static final String FB_USER_FIELDS = "id,cover,email,gender,name,languages,timezone,third_party_id,updated_time,picture"; public static FacebookUser getUserByToken(String ...
  • 小程序获取手机号,后端JAVA解密流程代码微信官方...2.后端接收code 调用官方接口地址获取用户秘钥 sessionKey。3.前端通过官方getPhoneNumber获取encryptedData,iv4.前端通过参数**【encryptedData】 、【iv】 、...
  • // 小程序登录获取用户openid const APP_ID = "xxxx" //开发者的appid const APP_SECRET = "xxxx" //开发者的appsecret const APP_URL = 'https://api.weixin.qq.com/sns/jscode2session' router.post('/wxlogin', ...
  • 1、需求描述 APP需要提交苹果的App Store审核时,因为集成了微信授权登录,导致...使用 Apple 登录实现用户身份验证 : Apple Developer Documentation 在您的应用程序中使用 Apple 按钮显示登录 : Apple Dev
  • 出现的问题:只要数据库存在用户信息,不管任何时候都可以登录,所以存在安全问题,就需要考虑权限控制,安全认证,防止CSRF攻击等问题。 前端代码 $.ajax({ url: '/login', type: 'POST', da
  • 网页中,就算登陆后,我们也得经常需要使用到用户名去做些验证的事情,来给予该展示的信息或者进行判断,在controller可以很简便的获取到当前登录用户信息,代码如下 User user1 =(User) SecurityUtils....
  • 后端登录Api

    2021-08-19 10:01:10
    后端 Api接口实现 1.先导入验证框架Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <...
  • 首先java 后端依赖两个jarorg.codehaus.xfirexfire-core1.2.6org.... 然后再调用wx.getuserInfo接口获取用户的信息。获取到的信息包含有用户基本信息(这里面没有openid),以及encryptedData,这个encryptedDat...
  • 最近在学习echarts,看到官方给出的入门案例数据都是“写死”的,那么应该如何从后端获取数据并渲染到前端呢?试着写了一个小案例,通过ajax实现的,小白初学,欢迎指正 前端代码 <!DOCTYPE html> <html>...
  • 一 前端微信小程序以数据驱动的理念以及类jsx语法的形式,以高集成高度封装的方式开辟了H5新理念。1.navigation传参和一般的链接带参数一样'?...获取属性值由于在小程序以数据驱动作为基本理念。我们要尽量...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 113,232
精华内容 45,292
关键字:

后端获取用户登录id