成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于SpringBoot的仿微信掃描登陸+輕量級富文本編輯->文章系統(tǒng)

MyFaith / 848人閱讀

摘要:微信的掃碼的登陸是要企業(yè)號的,對于一個(gè)學(xué)生狗哪來企業(yè)號,自己有個(gè)測試號內(nèi)心已十分滿足。自己決心做一個(gè)仿微信掃碼登陸,對,你沒看錯(cuò),就是仿,堅(jiān)信高仿出奇跡。

前言

點(diǎn)擊訪問項(xiàng)目鏈接
看到慕課網(wǎng)和segmentfault的發(fā)表手記和發(fā)表文章是Markdown 編輯器,說實(shí)話,對于第一次用的我真的很不習(xí)慣。不過對于我們代碼開發(fā)者來寫挺好的,也就對我們這些開發(fā)者述寫自己的代碼故事好點(diǎn)而已。這邊我用的summernote的輕量級文本編輯器,操作簡單,小白操作。適合一般人使用

系統(tǒng)介紹

這個(gè)系統(tǒng)我和我朋友一起做的,我只負(fù)責(zé)介紹自己部分,他的部分我將到時(shí)在文章評論貼上鏈接。
微信的掃碼的登陸是要企業(yè)號的,對于一個(gè)學(xué)生狗哪來企業(yè)號,自己有個(gè)測試號內(nèi)心已十分滿足。自己決心做一個(gè)仿微信掃碼登陸,對,你沒看錯(cuò),就是仿,堅(jiān)信高仿出奇跡。原理很簡單,首先要會創(chuàng)建二維碼,要會微信授權(quán)登陸和websocket,也就是把微信授權(quán)登陸的地址變?yōu)槎S碼讓微信的【掃一掃】,通過websocket通信完成之間的信息傳遞。你也可以不用websocket而用輪詢,只是性能耗損多。都可實(shí)現(xiàn)。
數(shù)據(jù)庫方面采用的是mysql和mongoDB,考慮到文章系統(tǒng)的圖片太多容易給mysql帶來太多負(fù)載,分些壓力給mongoDB,所以文件方面存在mongoDB,邏輯方面存在mysql(帶寬方面無變化....)
接下來,我要開始我的表演了,給我后退!

tips:

小尷尬的是微信測試號,要關(guān)注才可以訪問微信授權(quán),微信這邊也限定了微信測試號只可以100人。

系統(tǒng)簡單截圖介紹

系統(tǒng)已發(fā)布云服務(wù)器??砷L期訪問。只是測試號菜單兩個(gè)系統(tǒng)是不可以訪問,因?yàn)槲谊P(guān)掉了啊哈哈哈,不過我已經(jīng)寫了文章在segmentfault了,SpringBoot做的兩個(gè)系統(tǒng)....,或點(diǎn)擊我的文章查看。
首先查看的首頁:

掃碼成功到成功授權(quán)登陸或者拒絕授權(quán)登陸

系統(tǒng)代碼演示介紹

summernote 圖片上傳是二進(jìn)制本地文件的,也就是圖片并不會自己上傳到服務(wù)器,要自己去改寫他的圖片上傳

        $(function(){
            $(".summernote").summernote({
                height: 600, //編輯器的高度
                tabsize: 2,
                lang: "zh-CN",
                focus:true,
                toolbar: [
                    ["style", ["style"]],
                    ["font", ["bold", "underline", "clear"]],
                    ["fontname", ["fontname"]],
                    ["color", ["color"]],
                    ["para", ["ul", "ol", "paragraph"]],
                    ["table", ["table"]],
                    ["insert", ["link", "picture", "video"]],
                    ["view", ["fullscreen", "codeview", "help"]]
                ],
                callbacks: {
                //覆寫掉自帶的上傳文件函數(shù)
                    onImageUpload: function (files) { //the onImageUpload API
                        img = sendFile(files[0]);
                    }
                }
            });
        });
    //這一塊是上傳文件,可傳參數(shù)是文件
   function sendFile(file) {
            document.getElementById("loading5").style.display="block";
            data = new FormData();
            data.append("file", file);
            $.ajax({
                data: data,
                type: "POST",
                url: "${projectUrl}/testuploadimg2",
                cache: false,
                contentType: false,
                processData: false,
                success: function(data) {
                    if("uploadFail"==data){
                        alert("插入失敗");
                        return;
                    }
                    $("#nanSummernote").summernote("insertImage", data, "image name"); // the insertImage API
                    document.getElementById("loading5").style.display="none";
                },
            });
        }

接下來服務(wù)端這端就可以直接存啦!

    @PostMapping("/testuploadimg2")
    public String success(@RequestParam("file") MultipartFile file,
                          HttpServletRequest request){
        String fileId = "";
        try {
            File f = new File(file.getOriginalFilename(), file.getContentType(), file.getSize(), file.getBytes());
            f.setMd5(MD5Util.getMD5(file.getInputStream()) );
            fileId = KeyUtil.genUniqueKey();
            f.setId(fileId);
            mongoFileService.save(f);
            log.info("mongoDB存圖片成功!fileId={}",fileId);
        } catch (IOException | NoSuchAlgorithmException ex) {
            ex.printStackTrace();
            log.error("【MongoDB上傳文件錯(cuò)誤】:fileId={}",fileId);
            return null;
        }
        return urlConfig.getUrl()+urlConfig.getContextPath()+"/file/"+fileId;

MongoDB文件上傳我是學(xué)習(xí)慕課網(wǎng)的老衛(wèi)老師的手記基于 MongoDB 及 Spring Boot 的文件服務(wù)器的實(shí)現(xiàn)做的,學(xué)無止境啊哈哈。這邊就簡單貼上。
文章發(fā)表等其他功能可以自行去網(wǎng)站體驗(yàn)下,還有權(quán)限管理:用戶管理和文章審核,在文章編輯器的右下角可以看到,也是掃碼登陸,只是需要管理員及以上的權(quán)限才可以進(jìn)入頁面,我就簡單演示下:

文章按照要求步驟就可以提交你的表演等待審核就可以通過啦!左下角有個(gè)預(yù)覽操作,點(diǎn)擊將彈出二維碼掃碼就可以微信手機(jī)端預(yù)覽文章詳情啦,以上我將簡單展示下:

所謂權(quán)限采用的簡單的角色限制也就是所謂的RBAC。
采用切面編程來切面

@Aspect
@Component
@Slf4j
public class ManagerAspect {
    @Autowired
    private UserService userService;
    @Autowired
    private ManagerService managerService;
    @Pointcut("(execution(public * com.test.demo.controller.ManagerController.*(..)))"+"||"+"(execution(public * com.test.demo.controller.SuperManagerController.*(..)))")
    public void verify(){} //驗(yàn)證
    @Before("verify()")
    public void doerify() {    //方法的具體實(shí)現(xiàn)
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        String sessionOpenid = (String)attributes.getRequest().getSession().getAttribute("userid");  //openid
        User user = userService.findOne(sessionOpenid);
        Map map = new HashMap<>();
        if(user==null){
            log.error("未進(jìn)入管理員頁面原因:用戶不存在");
            throw new ManagerException();
        }
        Manager manager =  managerService.findByOpenid(sessionOpenid);
        if(manager==null){
            log.error("未進(jìn)入管理員頁面原因:無管理信息");
            throw new ManagerException();
        }
        String code = manager.getPower();
        if(code.equals(String.valueOf(PowerEnum.USER.getCode()))){   //如果是讀者  您無權(quán)限進(jìn)入管理員頁面
            throw new ManagerException();
        }
        String power = "undefind";
        if(code.equals(String.valueOf(PowerEnum.SUPER_ADMIN.getCode()))){
            power = String.valueOf(PowerEnum.SUPER_ADMIN.getMessage());
        }
        if(code.equals(String.valueOf(PowerEnum.ADMIN.getCode()))){
            power = String.valueOf(PowerEnum.ADMIN.getMessage());
        }
        if(power.equals("undefind")){
            map.put("msg","您無權(quán)限進(jìn)入管理員頁面");
            log.error("未進(jìn)入管理員頁面原因:無此權(quán)限");
            throw new ManagerException();
        }
    }
}

文章評論等是我朋友做的,他將也寫篇文章介紹,他的部分我將到時(shí)在文章評論貼上鏈接。
總體就是這樣,后期需要我將貼上源碼,如需了解系統(tǒng)詳情可以郵箱:[email protected]

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68054.html

相關(guān)文章

  • 經(jīng)驗(yàn) - 收藏集 - 掘金

    摘要:實(shí)現(xiàn)的原理權(quán)限機(jī)制與適配經(jīng)驗(yàn)掘金一概要已經(jīng)發(fā)布一段時(shí)間了,市面上很多應(yīng)用都已經(jīng)適配。希望對大家有所幫助,更短信驗(yàn)證就是那么簡單掘金又有半個(gè)月沒更新文章了,最近工作比較忙,一時(shí)沒時(shí)間寫,今天趁著清閑,趕緊補(bǔ)上一篇。。。。。 2017,你絕對想嘗試的新 Android 庫 - Android - 掘金1 BufferTextInputLayout 直接看效果圖:升序效果 ... 計(jì)算機(jī)程序...

    劉厚水 評論0 收藏0
  • 基于SpringBoot微信授權(quán)登錄+仿微信朋友圈+文章查看(評論)系統(tǒng)

    摘要:功能介紹微信網(wǎng)頁端顧名思義就是在微信瀏覽器上看的啦,本系統(tǒng)使用微信測試號條件有限授權(quán)登錄,可以查看網(wǎng)頁端所發(fā)的文章,對文章進(jìn)行評論,回復(fù),點(diǎn)贊,可修改個(gè)人的資料,可以發(fā)表說說,也是可對說說進(jìn)行回復(fù)點(diǎn)贊評論。 本系統(tǒng)是基于Spring Boot 技術(shù)實(shí)現(xiàn)的文章發(fā)布系統(tǒng),該系統(tǒng)是我和我朋友一起做的,本文僅介紹自己的這部分,他的那部分會在本文發(fā)布后在評論里貼上鏈接,微信網(wǎng)頁上的操作為我所負(fù)責(zé)...

    shadajin 評論0 收藏0

發(fā)表評論

0條評論

MyFaith

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<