• 记住密码功能


    <template>
        <div class="content">
            <div class="loginLogo" style="margin-top: 4rem;">
                <img src="static/logo-ss.png" alt="" />
            </div>         
            <view class="input-group">
                <view class="input-row border">
                    <text class="title">账号:</text>
                    <m-input class="m-input" type="text" clearable focus v-model="username" placeholder="请输入账号"></m-input>
                </view>
                <view class="input-row">
                    <text class="title">密码:</text>
                    <m-input type="password" displayable v-model="password" placeholder="请输入密码"></m-input>
                </view>
            </view>
            <view class="btn-row">
                <button type="primary" class="primary" @tap="loginByPwd">登录</button>
            </view>
            <!-- 记住密码 -->
            <view class="remember-psw">
                <checkbox-group>
                    <label><checkbox value="psw" :checked='rememberPsw' @tap="rememberPsw =! rememberPsw" color="#09CC86"/>记住账号密码</label>
                </checkbox-group>
            </view>
            <div class="copyright">
                技术支持:0712-2345658
            </div>
        </div>
    </template>
    
    <script>
        import mInput from '../../components/m-input.vue'
        export default {
            components: {
                mInput
            },
            data() {
                return {
                    username: '',
                    password: '',
                    rememberPsw:true,
                }
            },
            mounted() {
                        let that = this;
                        //页面加载完成,获取本地存储的用户名及密码
                        const username = uni.getStorageSync('username');
                        const password = uni.getStorageSync('password');
                        if(username && password){
                            that.username = username;
                            that.password = password;
                        }else{
                            that.username = "";
                            that.password = "";
                        }
                        
                    },
            methods: {
                loginByPwd() {
                    console.log(this.username)
                    var that = this;
                    var websiteUrl = this.websiteUrl;
                    if (this.password.length < 6) {
                        uni.showToast({
                            icon: 'none',
                            title: '密码最短为 6 个字符'
                        });
                        return;
                    }
                    
                    //此时从这里开始请求接口
                    uni.request({
                            url: websiteUrl + 'app/user/login',
                            header: {
                                'content-type': 'application/x-www-form-urlencoded'
                            },
                            method: 'POST',
                            timeout: 10000,
                            data: {
                                username: this.username,
                                password: this.password,
                            },
                            success: (res) => {
                                console.log(res)
                                uni.hideLoading()
                                if (res.data.code == 200) {
                                    uni.showToast({
                                        title: '登录成功',
                                        icon: 'none',
                                        duration: 500
                                    });
                                    uni.setStorageSync('token', res.data.data.token);
                                    uni.setStorageSync('role', res.data.data.user.role);
                                    uni.setStorageSync('deptCode', res.data.data.user.deptCode);
                                    uni.setStorageSync('userId', res.data.data.user.userId);
                                        //登录成功将用户名密码存储到用户本地
                                                            if(that.rememberPsw){//用户勾选“记住密码”
                                                                uni.setStorageSync('username', res.data.data.user.username);
                                                                uni.setStorageSync('password',  this.password);
                                                            }else{//用户没有勾选“记住密码”
                                                                uni.removeStorageSync('username');
                                                                uni.removeStorageSync('password');
                                                                that.user.username = "";
                                                                that.user.password = "";
                                                            }
                    
                                    setTimeout(function() {
                                        uni.switchTab({
                                            url:'../homepage/homepage'
                                        })
                                    }, 500)
                                } else if (res.data.code == 202) {
                                    uni.showToast({
                                        title: res.data.msg,
                                        icon: 'none',
                                        duration: 1500
                                    });
                                } else if (res.data.code == 203){
                                    uni.showToast({
                                        title: res.data.msg,
                                        icon: 'none',
                                        duration: 2000
                                    });
                                }
                            
                            },
                            fail: (res) => {
                                console.log(res)
                                uni.showToast({
                                    title: "请求超时!",
                                    icon: 'none',
                                    duration: 2000
                                });
                            }
                    
                        })
                },
                
            },
        }
    </script>
    
    <style>
        .content {
            display: flex;
            flex: 1;
            flex-direction: column;
            /* background-color: #efeff4; */
            padding: 10px;
            background: url(../../static/loginBg.jpg);
            background-size: 100% 100%;
        }
        .title{
            text-align: center;
            margin: 20px auto;
        }
        .loginLogo{
            width:30%;
            margin:0 auto;
        }
        .loginLogo img{
            display: block;
            width:100%;
            height:auto;
        }
        .input-group {        
            margin-top: 20px;
            position: relative;
            color: #fff;
        }
        
        .input-group::before {
            position: absolute;
            right: 0;
            top: 0;
            left: 0;
            height: 1px;
            content: '';
            -webkit-transform: scaleY(.5);
            transform: scaleY(.5);
            background-color: #c8c7cc;
        }
        
        .input-group::after {
            position: absolute;
            right: 0;
            bottom: 0;
            left: 0;
             
            content: '';
            -webkit-transform: scaleY(.5);
            transform: scaleY(.5);
            background-color: #c8c7cc;
        }
        
        .input-row {
            display: flex;
            flex-direction: row;
            position: relative;
            font-size: 18px;
            line-height: 40px;
            border-bottom: 1px solid #979797;
            width: 90%;
            margin: 0 auto;
        }
        
        .input-row .title {
            width: 100px;
            padding-left: 15px;
        }
        
        .input-row.border::after {
            position: absolute;
            right: 0;
            bottom: 0;
            left: 8px;
            height: 0px; 
            content: '';
            -webkit-transform: scaleY(.5);
            transform: scaleY(.5);
             
        }
        .input-group::before{
            background-color: none;
            height: 0px;
        }
        .btn-row {
            margin-top: 25px;
            padding: 10px;
        }
        
        button.primary {
            background-color: #0faeff;
        }
        .copyright{
            position: absolute;
            bottom: 10px;
            left: 10px;
            text-align: center;
            width: 100%;
            color: #e0e0e0;
        }
        
    </style>

    以上是登录代码:

    重点代码如下截图:

     

     

    第二种,java 后台,使用的thymeleaf 写的页面 手机浏览器访问的,

    一:java 后台代码:

      @ApiOperation(value = "登录")
        @RequestMapping(value = "login", method = RequestMethod.POST)
        public String login(String username, String password, String remember, HttpServletRequest req, HttpServletResponse resp, HttpSession httpSession, ModelMap modelMap) {
            User user = userService.byUsername(username);
            if (null != user) {
                String md5Password = MD5Tool.md5(password);
                if (user.getPassword().equals(md5Password)) {
                    httpSession.setAttribute("currentUser", user);
                    if("true".equals(remember)){
                        Cookie ck1=new Cookie("remember",remember);
                        ck1.setMaxAge(60*60);
                        resp.addCookie(ck1);
                        Cookie ck2=new Cookie("username",username);
                        ck2.setMaxAge(60*60);
                        resp.addCookie(ck2);
                        Cookie ck3=new Cookie("password",password);
                        ck3.setMaxAge(60*60);
                        resp.addCookie(ck3);
    
                    }else{
                        //清cookie
                        Cookie [] cks=req.getCookies();
                        if(cks !=null){
                            for(Cookie c:cks){
                                c.setMaxAge(0);
                                resp.addCookie(c);
                            }
                        }
                    }
    
    
    
    
    
    
                    modelMap = getIndexDetail(modelMap, user);
                    if (user.getRole().equals("company")) {
                        return "qiyehome";
                    } else {
                        return "index";
                    }
                } else {
                    httpSession.setAttribute("message", "密码不正确!");
                    return "login";
                }
            } else {
                httpSession.setAttribute("message", "用户不存在!");
                return "login";
            }
        }

    j前端代码

    <html xmlns:th="http://www.thymeleaf.org">
        <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <title>登录</title>
            <meta name="viewport" content="initial-scale=1, maximum-scale=1">
            <link rel="shortcut icon" href="/favicon.ico">
            <meta name="apple-mobile-web-app-capable" content="yes">
            <meta name="apple-mobile-web-app-status-bar-style" content="black">
            <link rel="stylesheet" th:href="@{/dist/css/sm.min.css}">
            <link rel="stylesheet" th:href="@{/dist/css/sm-extend.min.css}">
            <link rel="stylesheet" th:href="@{/dist/css/comm.css}">
    
        </head>
        <body>
        <div class="content">
            <div class='login'>
                <form th:action="@{/weChat/login/login}" th:method="post" >
                <div class='login_title'>
                    食品报送平台
                </div>
                <div class='login_fields'>
                    <div class='login_fields__user'>
                        <div class='icon'>
                            <img src='../../img/user_icon_copy.png'>
                        </div>
                        <input placeholder='用户名'  id="username" name="username" type='text' th:value="${username}">
                        <div class='validation'>
                            <img src='../../img/tick.png'>
                        </div>
                        </input>
                    </div>
                    <div class='login_fields__password'>
                        <div class='icon'>
                            <img src='../../img/lock_icon_copy.png'>
                        </div>
                        <input placeholder='密码' required name="password" id="password" type='password' th:value="${password}">
                        <div class='validation'>
                            <img src='../../img/tick.png'>
                        </div>
                        <div style="color:red;" th:text="${session.message}" th:if="${session.message!=null}"></div>
                    </div>
    
                    <div class='login_fields__remember' style="color:#fff;font-size: 14px;margin-top:10px;padding-left:10px;">
                        <input id="remember" name="remember" type='checkbox' value="true">    记住密码
    
                    </div>
                    <div class='login_fields__submit'>
                        <input type='submit' class="loginSubmit" value='登录'>
                    </div>
                </div>
                </form>
                <div class='disclaimer'>
                    <p>技术支持</p>
                </div>
            </div>
        </div>
            <script src='https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js'></script>
            <script th:src='@{/dist/js/sm.js}'></script>
            <script th:src='@{/dist/js/sm-extend.js}'></script>
        </body>
    <script>
        var cookies=document.cookie.split(';');
        function getCK(mkey) {
            for (var i=0;i<cookies.length;i++){
                var kv=cookies[i].split('=');
                if(kv[0].trim()==mkey){
                    return kv[1].trim();
                }
            }
            return '';
        }
    
    
        window.onload=function () {
            var remember=getCK('remember');
            var username=getCK('username');
            var password=getCK('password');
            if(remember=='true'){
                var userNameInput=document.getElementById("username");
                userNameInput.value=username;
                var rememberInput=document.getElementById("remember");
                rememberInput.checked="checked";
                var passwordInput=document.getElementById("password");
                passwordInput.value=password;
            }
    
            console.log("222",remember,username,password)
    
        }
    </script>
    </html>
    

      

  • 相关阅读:
    TCP 登录实现代码
    网络编程步骤 乔老师整理
    网络编程步骤 乔老师整理
    UDP 编程 客服咨询回复
    UDP 编程 客服咨询回复
    利用java在服务器和客服端建立连接,进行通讯(代码实例)
    利用java在服务器和客服端建立连接,进行通讯(代码实例)
    InetAddress 类简介
    InetAddress 类简介
    Mysql并发时经典常见的死锁原因及解决方法
  • 原文地址:https://www.cnblogs.com/chenlijing/p/14182876.html
Copyright © 2020-2023  润新知