国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

結(jié)合ruoyi-cloud和ruoyi-app實(shí)現(xiàn)微信小程序的授權(quán)登錄

這篇具有很好參考價(jià)值的文章主要介紹了結(jié)合ruoyi-cloud和ruoyi-app實(shí)現(xiàn)微信小程序的授權(quán)登錄。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

原視頻鏈接

https://www.bilibili.com/video/BV1mg4y1s75r/?spm_id_from=333.337.search-card.all.click&vd_source=c15794e732e28886fefab201ec9c6253

1 前言

結(jié)合RuoYi-CloudRuoYi-App實(shí)現(xiàn)微信小程序的授權(quán)登錄。
之前講過前后端分離版的授權(quán)登錄,邏輯大致一致,不同點(diǎn)有:

  • 微信頭像和昵稱的獲取方式。由于最新的本地庫(kù)通過getUserProfilegetUserInfo獲取不到用戶頭像和昵稱。采用頭像昵稱填寫功能。(備注:https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01)
  • 微服務(wù)端采用OpenFeign進(jìn)行遠(yuǎn)程調(diào)用,不會(huì)遠(yuǎn)程調(diào)用的粉絲,可以學(xué)習(xí)一下。Feign的底層是Spring3.0RestTemplate,若依的RestTemplate又借助于OkHttp。相對(duì)于Feign本身來(lái)講,OpenFeign是支持Spring MVC的注解的,用起來(lái)非常方便。

1.1 環(huán)境準(zhǔn)備

  • 下載RuoYi-Cloud代碼
    添加鏈接描述https://gitee.com/y_project/RuoYi-Cloud
  • 下載RuoYi-App代碼
    https://gitee.com/y_project/RuoYi-App

1.2 登錄流程圖

結(jié)合ruoyi-cloud和ruoyi-app實(shí)現(xiàn)微信小程序的授權(quán)登錄

2 小程序代碼

  • 微信開發(fā)者工具基礎(chǔ)庫(kù)用的2.30.*
  • app模塊配置微信登錄
    結(jié)合ruoyi-cloud和ruoyi-app實(shí)現(xiàn)微信小程序的授權(quán)登錄
  • 使用自己的appid
    結(jié)合ruoyi-cloud和ruoyi-app實(shí)現(xiàn)微信小程序的授權(quán)登錄

2.1 RuoYi-App編輯api/login.js

  • 登錄、退出接口路徑加/auth
  • 獲取用戶信息接口路徑加/system
  • 獲取驗(yàn)證碼接口路徑換成/code
import request from '@/utils/request'

// 登錄方法
export function login(username, password, code, uuid) {
  const data = {
    username,
    password,
    code,
    uuid
  }
  return request({
    'url': '/auth/login',
    headers: {
      isToken: false
    },
    'method': 'post',
    'data': data
  })
}

// 獲取用戶詳細(xì)信息
export function getInfo() {
  return request({
    'url': '/system/user/getInfo',
    'method': 'get'
  })
}

// 退出方法
export function logout() {
  return request({
    'url': '/auth/logout',
    'method': 'delete'
  })
}

// 獲取驗(yàn)證碼
export function getCodeImg() {
  return request({
    'url': '/code',
    headers: {
      isToken: false
    },
    method: 'get',
    timeout: 20000
  })
}

2.4 新增按鈕微信授權(quán)登錄

  • 在登錄按鈕下,新增微信授權(quán)登錄按鈕
<button @click="wxHandleLogin" class="login-btn cu-btn block bg-green lg round">微信授權(quán)登錄</button>

2.6 新增wxHandleLogin方法獲取code

// 微信登錄
	async wxHandleLogin() {
			uni.getProvider({
				service:'Oauth',
				success: (res) => {
					console.log(res);
					if(res.provider.indexOf("WeiXin")){
						//登錄
						uni.login({
							provider:'WeiXin',
							success: (loginRes) => {
							}
						})
					}
				}
			})
	}

2.9 創(chuàng)建sendWxLoginFormToLocalService方法

//向本地服務(wù)發(fā)起請(qǐng)求
	sendWxLoginFormToLocalService(){
				console.log("向后端發(fā)起請(qǐng)求" + this.wxLoginForm);
				this.$store.dispatch('wxLogin', this.wxLoginForm).then(() => {
				  this.$modal.closeLoading()
				}).catch(() => {

				})  
	}

3 微服務(wù)代碼

3.5 auth服務(wù)TokenController添加接口wxLogin

    public R<?> wxLogin(@RequestBody WxLoginBody wxLoginBody){
        String code = wxLoginBody.getCode();

        //想微信服務(wù)器發(fā)送請(qǐng)求獲取用戶信息
        String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxAppConfig.getAppId() + "&secret=" + wxAppConfig.getAppSecret() + "&js_code=" + code + "&grant_type=authorizatinon_code";
        String res = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSONObject.parseObject(res);

        //獲取session_key和openid
        String sessionKey = jsonObject.getString("session_key");
        String openid = jsonObject.getString("openid");

        if (StringUtils.hasText(openid)){
            // 如果解析成功,獲取token
            LoginUser userInfo = sysLoginService.wxLogin(openid);
            // 獲取登錄token
            return R.ok(tokenService.createToken(userInfo));
        }else{
            return R.fail("微信登錄失敗!");
        }
    }

3.7 ruoyi-api模塊新增遠(yuǎn)程調(diào)用

/**
     * 通過openid查詢用戶信息
     *
     * @param openid openid 用戶唯一標(biāo)識(shí)
     * @param source 請(qǐng)求來(lái)源
     * @return 結(jié)果
     */
    @GetMapping("/user/getInfoByOpenid/{openid}")
    public R<LoginUser> getInfoByOpenid(@PathVariable("openid") String openid, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);

3.9 system服務(wù)SysUserController新增內(nèi)部接口getInfoByOpenid和addWxUser

  • 數(shù)據(jù)庫(kù)添加unionIdopenId
  • domain (SysUser)
/** unionId */
    private String unionId;

    /** openId */
    private String openId;
    
     public String getUnionId() {
        return unionId;
    }

    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }

    public String getOpenId() {
        return openId;
    }

    public void setOpenId(String openId) {
        this.openId = openId;
    }
  • controller 層(SysUserController)
	/**
     * 根據(jù)openid獲取當(dāng)前用戶信息
     */
    public R<LoginUser> getInfoByOpenid(@PathVariable("openid") String openid)
    {
        SysUser sysUser = userService.selectUserByOpenid(openid);
        LoginUser sysUserVo = new LoginUser();
        if (StringUtils.isNull(sysUser))
        {
            sysUserVo.setSysUser(null);
            return R.ok(sysUserVo);
        }
        return R.ok(sysUserVo);
    }
    
	/**
     * 新增微信用戶信息
     */
    public R<SysUser> addWxUser(@RequestBody SysUser sysUser)
    {
        String username = sysUser.getUserName();
        userService.insertWxUser(sysUser);
        return R.ok(sysUser);
    }
  • service 層(SysUserServiceImpl)
    接口:
	/**
     * 通過openid查詢用戶
     *
     * @param openid 用戶唯一標(biāo)識(shí)
     * @return 用戶對(duì)象信息
     */
    public SysUser selectUserByOpenid(String openid);

	/**
     * 新增微信用戶信息
     *
     * @param user 用戶信息
     * @return 結(jié)果
     */
    public int insertWxUser(SysUser user);

實(shí)現(xiàn)類:

	/**
     * 通過openid查詢用戶
     *
     * @param openid 用戶唯一標(biāo)識(shí)
     * @return 用戶對(duì)象信息
     */
    @Override
    public SysUser selectUserByOpenid(String openid)
    {
        return userMapper.selectUserByOpenid(openid);
    }

	/**
     * 新增微信用戶信息
     *
     * @param user 用戶信息
     * @return 結(jié)果
     */
    @Override
    public int insertWxUser(SysUser user)
    {
        // 新增用戶信息
        return userMapper.insertUser(user);
    }

mapper 層 (SysUserMapper)

/**
     * 通過openid查詢用戶
     *
     * @param openid 用戶唯一標(biāo)識(shí)
     * @return 用戶對(duì)象信息
     */
    public SysUser selectUserByOpenid(String openid);

mybatis.xml (SysUserMapper.xml)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-491201.html

u.union_id, u.open_id,

....
<select id="selectUserByOpenid" parameterType="String" resultMap="SysUserResult">
		<include refid="selectUserVo"/>
		where u.open_id = #{openId} and u.del_flag = '0'
	</select>
....
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
 		insert into sys_user(
 			<if test="userId != null and userId != 0">user_id,</if>
 			<if test="deptId != null and deptId != 0">dept_id,</if>
 			<if test="userName != null and userName != ''">user_name,</if>
 			<if test="nickName != null and nickName != ''">nick_name,</if>
 			<if test="email != null and email != ''">email,</if>
 			<if test="avatar != null and avatar != ''">avatar,</if>
 			<if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
 			<if test="sex != null and sex != ''">sex,</if>
 			<if test="password != null and password != ''">password,</if>
 			<if test="status != null and status != ''">status,</if>
 			<if test="createBy != null and createBy != ''">create_by,</if>
 			<if test="remark != null and remark != ''">remark,</if>
			<if test="openId != null and openId != ''">open_id,</if>
			<if test="unionId != null and unionId != ''">union_id,</if>
 			create_time
 		)values(
 			<if test="userId != null and userId != ''">#{userId},</if>
 			<if test="deptId != null and deptId != ''">#{deptId},</if>
 			<if test="userName != null and userName != ''">#{userName},</if>
 			<if test="nickName != null and nickName != ''">#{nickName},</if>
 			<if test="email != null and email != ''">#{email},</if>
 			<if test="avatar != null and avatar != ''">#{avatar},</if>
 			<if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
 			<if test="sex != null and sex != ''">#{sex},</if>
 			<if test="password != null and password != ''">#{password},</if>
 			<if test="status != null and status != ''">#{status},</if>
 			<if test="createBy != null and createBy != ''">#{createBy},</if>
 			<if test="remark != null and remark != ''">#{remark},</if>
			<if test="openId != null and openId != ''">#{openId},</if>
			<if test="unionId != null and unionId != ''">#{unionId},</if>
 			sysdate()
 		)
	</insert>

到了這里,關(guān)于結(jié)合ruoyi-cloud和ruoyi-app實(shí)現(xiàn)微信小程序的授權(quán)登錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 若依微服務(wù)版啟動(dòng)(RuoYi-Cloud)教程

    若依微服務(wù)版啟動(dòng)(RuoYi-Cloud)教程

    之前一直有小伙伴咨詢?nèi)粢牢⒎?wù)版如何在本地啟動(dòng),今天簡(jiǎn)單的給大家介紹一下。 首先,學(xué)習(xí)Java的小伙伴應(yīng)該對(duì)若依框架都應(yīng)該有所了解,RuoYi-Cloud 是一個(gè) Java EE 分布式 微服務(wù)架構(gòu)平臺(tái),基于經(jīng)典技術(shù)組合(Spring Boot、Spring Cloud Alibaba、Vue、Element),內(nèi)置模塊如:部門管

    2024年01月18日
    瀏覽(25)
  • 【云原生】3.5 RuoYi-Cloud部署實(shí)戰(zhàn)(下)

    【云原生】3.5 RuoYi-Cloud部署實(shí)戰(zhàn)(下)

    ?哈嘍~大家好呀,這篇呢我們接著上篇來(lái)講。 ???個(gè)人主頁(yè):個(gè)人主頁(yè)?????? ? ? ? ? ? ? ???系列專欄:【云原生系列】 ??與這篇相關(guān)的文章:? ? ? ? ? ?? 【云原生】3.2 Kubernetes 實(shí)戰(zhàn)之多租戶系統(tǒng)實(shí)戰(zhàn) 【云原生】3.2 Kubernetes 實(shí)戰(zhàn)之多租戶系統(tǒng)實(shí)戰(zhàn)_程序猿追的博

    2024年02月03日
    瀏覽(22)
  • RuoYi-Cloud 若依微服務(wù)版啟動(dòng)教程(保姆級(jí))

    RuoYi-Cloud 若依微服務(wù)版啟動(dòng)教程(保姆級(jí))

    RuoYi-Cloud 是一個(gè) Java EE 企業(yè)級(jí)快速開發(fā)平臺(tái),基于經(jīng)典技術(shù)組合(Spring Boot、Spring Cloud Alibaba、Vue、Element),內(nèi)置模塊如:部門管理、角色用戶、菜單及按鈕授權(quán)、數(shù)據(jù)權(quán)限、系統(tǒng)參數(shù)、日志管理、代碼生成等。在線定時(shí)任務(wù)配置;支持集群,支持多數(shù)據(jù)源。 1、系統(tǒng)環(huán)境 J

    2023年04月09日
    瀏覽(83)
  • Docker容器化部署若依微服務(wù)ruoyi-cloud項(xiàng)目

    Docker容器化部署若依微服務(wù)ruoyi-cloud項(xiàng)目

    接下來(lái)的內(nèi)容以 Ubuntu 22.04.1 操作系統(tǒng)為例。 驗(yàn)證版本信息 Note: 在 CentOS7 上使用上述 yum 方式安裝的 Docker ,默認(rèn)自帶了Docker Compose Plugin,不過命令是 docker compose 。 docker pull docker run docker images docker ps docker logs docker start docker stop docker restart docker rmi docker rm docker exec docker netwo

    2024年02月04日
    瀏覽(23)
  • 若依移動(dòng)端Ruoyi-App 項(xiàng)目的后端項(xiàng)目入門

    若依移動(dòng)端Ruoyi-App 項(xiàng)目的后端項(xiàng)目入門

    后端項(xiàng)目運(yùn)行 運(yùn)行報(bào)錯(cuò)? Error creating bean with name \\\'sysConfigServiceImpl\\\': Invocation of init method failed 數(shù)據(jù)庫(kù)創(chuàng)建了。 ?代碼連接數(shù)據(jù)庫(kù)地方了也匹配上了。但是還是報(bào)錯(cuò)。 ?分析 : 想起來(lái)我電腦從來(lái)沒有安裝過redis ?下載安裝redis到windows 鏈接:https://pan.baidu.com/s/1GjNhTPFfW5aMEYoy0QDZ3g?

    2024年02月11日
    瀏覽(20)
  • 若依cloud(RuoYi-Cloud)新增業(yè)務(wù)模塊和功能模塊增刪改查演示

    若依cloud(RuoYi-Cloud)新增業(yè)務(wù)模塊和功能模塊增刪改查演示

    前言 看了幾篇文章感覺都不太滿意,索性自己來(lái)寫一篇。 一、后端 后端新建業(yè)務(wù)模塊流程大致如下: 看一下目錄結(jié)構(gòu), business 就是我們自己的業(yè)務(wù)模塊: 1.0 新建業(yè)務(wù)模塊 就是在 ruoyi-module模塊 下新建一個(gè) springboot 工程模塊,大家既然都學(xué)到cloud了,我相信這一步也不用多

    2024年02月17日
    瀏覽(19)
  • 若依框架(RuoYi-Cloud 微服務(wù)版本)134節(jié)視頻教程

    RuoYi-Cloud 是一個(gè) Java EE 分布式微服務(wù)架構(gòu)平臺(tái),基于經(jīng)典技術(shù)組合(Spring Boot、Spring Cloud Alibaba、Vue、Element),內(nèi)置模塊如:部門管理、角色用戶、菜單及按鈕授權(quán)、數(shù)據(jù)權(quán)限、系統(tǒng)參數(shù)、日志管理、代碼生成等。在線定時(shí)任務(wù)配置;支持集群,支持多數(shù)據(jù)源。 在線體驗(yàn) 若依

    2024年02月13日
    瀏覽(18)
  • 【docker快速部署微服務(wù)若依管理系統(tǒng)(RuoYi-Cloud)】

    【docker快速部署微服務(wù)若依管理系統(tǒng)(RuoYi-Cloud)】

    工作原因,需要一個(gè)比較完整的開源項(xiàng)目測(cè)試本公司產(chǎn)品。偶然發(fā)現(xiàn)RuoYi-Cloud非常適合,它有足夠多的中間件,而且官方提供docker安裝,但我本人在安裝過程中遇到了很多坑,在這里記錄一下防止下次會(huì)再次遇到。 https://gitee.com/y_project/RuoYi-Cloud 內(nèi)存至少16G,處理器至少4核 內(nèi)

    2024年02月09日
    瀏覽(22)
  • 若依開源框架-微服務(wù)版本(ruoyi-Cloud)使用說明-超詳細(xì)

    若依開源框架-微服務(wù)版本(ruoyi-Cloud)使用說明-超詳細(xì)

    JDK 1.8 Mysql 5.7以上 Nacos 2.0.3 Node 14 版本以上 打開網(wǎng)站: RuoYi 若依官方網(wǎng)站 |后臺(tái)管理系統(tǒng)|權(quán)限管理系統(tǒng)|快速開發(fā)框架|企業(yè)管理系統(tǒng)|開源框架|微服務(wù)框架|前后端分離框架|開源后臺(tái)系統(tǒng)|RuoYi|RuoYi-Vue|RuoYi-Cloud|RuoYi框架|RuoYi開源|RuoYi視頻|若依視頻|RuoYi開發(fā)文檔|若依開發(fā)文檔|J

    2024年02月04日
    瀏覽(19)
  • 【RuoYi-Cloud項(xiàng)目研究】【ruoyi-gateway模塊】網(wǎng)關(guān)的AuthFilter完成“認(rèn)證”,注意是認(rèn)證而不是權(quán)限

    過濾器的功能是檢驗(yàn)經(jīng)過網(wǎng)關(guān)的每一個(gè)請(qǐng)求,檢查 token 中的信息是否有效。 注意是“認(rèn)證檢查”,而不是“權(quán)限” ,權(quán)限是在每個(gè)服務(wù)的Controller上貼權(quán)限注解 1、在用戶完成登錄后,程序會(huì)把用戶相關(guān)的用戶、角色、權(quán)限等信息臨時(shí)存儲(chǔ)在 redis 中,并把token返回給終端用戶

    2024年02月07日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包