通過微信小程序掃碼庆聘,在PC端登陸跳轉(zhuǎn)相應(yīng)頁面

通過微信小程序掃碼胜臊,在PC端登陸跳轉(zhuǎn)相應(yīng)頁面

最近在做一個零食店,移動端采用微信小程序進行實現(xiàn)掏觉。當(dāng)然区端,既然是零食店值漫,那么肯定會有后臺管理的澳腹,當(dāng)時的想法是如何才能通過微信小程序里進行掃碼去登陸PC端的管理平臺呢?話不多說杨何,接下來就說說我是怎么做到酱塔!

首先,大致上講一下我的實現(xiàn)思路危虱,整體通過WebSocket來實現(xiàn)自動跳轉(zhuǎn)羊娃。在PC登陸頁,展示二維碼埃跷,建立WebSocket連接蕊玷,當(dāng)微信小程序掃碼后,在后臺進行身份驗證弥雹,并且將驗證結(jié)果實時發(fā)送給在PC登陸頁建立的websocket連接垃帅,然后進行相應(yīng)信息的提示以及頁面的跳轉(zhuǎn)。

掃碼登陸流程
  1. 生成PC端頁面二維碼 這個二維碼中放的什么信息呢剪勿,當(dāng)時是能夠唯一標(biāo)識客戶端的UUID啦贸诚,不然你掃碼之后,應(yīng)該給哪個客戶端發(fā)送狀態(tài)信息呢

  2. 進入PC端管理頁時,獲取唯一標(biāo)識酱固,建立websocket連接械念,并且以該唯一標(biāo)識作為key存放在map集合當(dāng)中。

pc端代碼


var websocket = null;

    var url="ws://localhost:8080/snacks/socketLogin/[[${socketKey}]]";

    if('WebSocket' in window)

        websocket = new WebSocket(url);

    else

        layer.msg("該瀏覽器暫不支持运悲!請更換瀏覽器",{icon:2,time:1000})

    websocket.onopen = function () {



    }

    websocket.onclose = function () {

        layer.msg("連接失效龄减,請刷新頁面",{icon:2,time:1000})

    }

    websocket.onmessage = function (e) {

        var res = e.data;

        var mid = eval("var json = "+res)

        if(json.code=="1000"){

            //登陸成功

            layer.msg("登陸成功!",{icon:1,time:1000},function () {

                window.location.href = "http://localhost:8080/snacks/login/goShopIndex/"+json.openId+"/snacks";

            })

        }else{

            //登陸失敗

            layer.msg("該用戶暫時沒有權(quán)限或者商戶",{icon:2,time:2000})

        }

    }

服務(wù)器端代碼


private static ConcurrentHashMap<String, Session> sessionMap = new ConcurrentHashMap<>();

@OnOpen

    public void onOpen(Session session, @PathParam("socketKey") String socketKey){

        System.out.println("websocket:"+socketKey+"--->建立成功");

        sessionMap.put(socketKey,session);

    }

    @OnClose

    public void onClose(Session session,@PathParam("socketKey") String socketKey){

        System.out.println("websocket:"+socketKey+"--->斷開連接");

        sessionMap.remove(socketKey);

    }

  1. <font size='4'>然后呢就是微信小程序端了班眯,微信小程序通過掃碼獲取到該PC登陸頁建立的websocket連接的唯一標(biāo)識Key后欺殿,將自己的信息與這個key作為data請求后臺接口。在后臺接口中對用戶信息進行校驗鳖敷,之后將校驗結(jié)果發(fā)送給該key對應(yīng)的session連接就可以啦 </font>

服務(wù)器端


@RequestMapping("/getLoginCode")

    @ResponseBody

    public Integer getLoginCode(HttpSession session, String socketKey, String openId){

        //在這里進行登陸信息驗證

        脖苏。。定踱。棍潘。。崖媚。

        //獲取到websocket連接session的map

        ConcurrentHashMap<String, Session> sessionMap = LoginSocket.getSessionMap();

        //將狀態(tài)信息發(fā)送到客戶端

        Session currentSession = sessionMap.get(socketKey);

        currentSession.getAsyncRemote().sendText(responseJson);

        return result.getCode();

    }

微信小程序端


scanCodeLogin:function(){

    wx.scanCode({

      scanType:'qrCode',

      success:function(e){

        var socketKey = e.result;

        app.checkSession();

        var openId = wx.getStorageSync("openId");



        wx.request({

          url: app.baseUrl + '/getLoginCode',

          method:'POST',

          header:app.postHeader,

          data:{socketKey:socketKey,openId:openId},

          success:function(e){

            console.log(e)

          var result = e.data;

          if(result == 1000){

              wx.showToast({

                title: '登陸成功',

              })

          }else{

              wx.showModal({

                title: '登陸失敗',

                content: '該用戶暫時沒有權(quán)限或者商戶',

                showCancel:false

              })

          }

          }

        })

      },

      fail:function(){

      }

    })

這里的websocket也可以替換為消息隊列中間件亦歉,但是這樣是不是大材小用了呢?

給個關(guān)注畅哑,繼續(xù)努力

關(guān)于本文章的實戰(zhàn)演示可以看這里最適合java開發(fā)者的實戰(zhàn)項目(包含多個技術(shù)棧)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肴楷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荠呐,更是在濱河造成了極大的恐慌赛蔫,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泥张,死亡現(xiàn)場離奇詭異呵恢,居然都是意外死亡,警方通過查閱死者的電腦和手機媚创,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門渗钉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钞钙,你說我怎么就攤上這事鳄橘。” “怎么了芒炼?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵瘫怜,是天一觀的道長。 經(jīng)常有香客問我焕议,道長宝磨,這世上最難降的妖魔是什么弧关? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮唤锉,結(jié)果婚禮上世囊,老公的妹妹穿的比我還像新娘。我一直安慰自己窿祥,他們只是感情好株憾,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晒衩,像睡著了一般嗤瞎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上听系,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天贝奇,我揣著相機與錄音,去河邊找鬼靠胜。 笑死掉瞳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浪漠。 我是一名探鬼主播陕习,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼址愿!你這毒婦竟也來了该镣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤响谓,失蹤者是張志新(化名)和其女友劉穎损合,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歌粥,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡塌忽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年拍埠,在試婚紗的時候發(fā)現(xiàn)自己被綠了失驶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡枣购,死狀恐怖嬉探,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棉圈,我是刑警寧澤涩堤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站分瘾,受9級特大地震影響胎围,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一白魂、第九天 我趴在偏房一處隱蔽的房頂上張望汽纤。 院中可真熱鬧,春花似錦福荸、人聲如沸蕴坪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽背传。三九已至,卻和暖如春台夺,著一層夾襖步出監(jiān)牢的瞬間径玖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工颤介, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挺狰,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓买窟,卻偏偏與公主長得像丰泊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子始绍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容