springboot+vue.js实现登录效果(session拦截)

springboot+vue.js实现登录效果(session拦截)


GitHub地址:

https://github.com/Guoxxin/logindemo

主要技术实现:

  1. springboot
  2. vue.js
  3. spring-data-jpa
  4. mysql

主要流程:

用户在页面输入登录名+密码,通过axios传回后台,后台接收参数进行判断,传回前台登录状态,前台根据返回值判断是否允许该用户进入主页

代码实现:

  1. 首先是后台不接数据库,进行单机判断
  <el-form :rules="rules" class="login-container" label-position="left"
           label-width="0px" v-loading="loading">
    <h3 class="login_title">系统登录</h3>
    <el-form-item prop="account">
      <el-input type="text" v-model="loginForm.username" auto-complete="off" placeholder="账号"></el-input>
    </el-form-item>
    <el-form-item prop="checkPass">
      <el-input type="password" v-model="loginForm.password" auto-complete="off" placeholder="密码"></el-input>
    </el-form-item>
    <el-checkbox class="login_remember" v-model="checked" label-position="left">记住密码</el-checkbox>
    <el-form-item style="width: 100%">
      <el-button type="primary" @click.native.prevent="getLogin()" style="width: 100%">登录</el-button>
    </el-form-item>
  </el-form>
</template>
<script>
  import axios from 'axios'
  export default{
    data(){
      return {
        rules: {
          account: [{required: true, message: '请输入用户名', trigger: 'blur'}],
          checkPass: [{required: true, message: '请输入密码', trigger: 'blur'}]
        },
        checked: true,
        loginForm: {
          username: 'guo',
          password: '123',
          isLogin:true
        },
        loading: false
      }
    },
    methods: {
      getLogin() { //方法
        console.log(this.formLabelAlign);
        let name = this.loginForm.username;
        let pass = this.loginForm.password;
        if ("" != name && "" != pass) {
          axios.post("login", {
            "username": this.loginForm.username,
            "password": this.loginForm.password,
          }).then((response) => {
            console.log(response.data)
            if (response.data.flag == true) {
              alert("登录成功");
              this.$router.replace({path: '/HelloWorld'});

            } else {
              alert("登录失败")
            }
          })
        }
      },
</script>

这边我们采用了element做我们的登录模板样式,真心舒服,后台判断

//controller.java
@PostMapping("/login")
    public Map<String,Object> login(@RequestBody Map user){
        Map<String,Object> map = new HashMap<>(6) ;
        if("guo".equals(user.get("username"))&&"123".equals(user.get("password"))){
            map.put("flag",true) ;
            map.put("msg","登录成功") ;
            return map ;
        }
        map.put("flag","false") ;
        map.put("msg","用户名或密码错误") ;
        return map ;
    }

前台获取后台所传回的msg和flag进行判断登录

  1. 接下来是我们加了数据库之后进行判断登录。用户名在数据库中已存在且密码正确我们才予以登录
//js
submitClick: function () {
        var _this = this;
        this.loading = true;
        axios.post('loginVerify', {
          "loginname": this.loginForm.username,
          "password": this.loginForm.password
        }).then(resp=> {
          _this.loading = false;
          if (resp.status == 200) {
            //成功
            var json = resp.data;
            if (json.status == 200) {
              _this.$router.replace({path: '/HelloWorld'});
            } else {
              _this.$alert('登录失败!', '失败!');
            }
          } else {
            //失败
            _this.$alert('登录失败!', '失败!');
          }
        },resp=> {
          _this.loading = false;
          _this.$alert('找不到服务器⊙﹏⊙∥!', '失败!');
        });
      },

在上方登录按钮中click属性将getLogin()换为submitClick即可使用

//controller
@PostMapping("/loginVerify")
    public Result login(@RequestBody User user, HttpSession session){
        System.out.println(user.getLoginname());
        boolean isLogin=userService.verifyLogin(user);
        System.out.println(isLogin);
        if (isLogin){
            session.setAttribute(WebSecurityConfig.SESSION_KEY,user.getLoginname());
            return new Result(200,"登陆成功",null);
        }else {
            return new Result(500,"登录失败",null);
        }
    }
//service
public boolean verifyLogin(User user){
        List<User> userList = userRepository.findByLoginnameAndPassword(user.getLoginname(),user.getPassword());
        return userList.size()>0;
    }
//repository
public interface UserRepository extends JpaRepository<User,Integer> {
    public List<User> findByLoginnameAndPassword(String loginname, String password);
}

这样我们的登录功能就ok了!!!

感谢阅读!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容

  • 简说Vue (组件库) https://github.com/ElemeFE/element" 饿了么出品的VUE...
    Estrus丶阅读 1,458评论 0 1
  • 金克斯
    无欲而为阅读 163评论 0 0
  • 晚安,爱人 提上你的旧鞋子与我,踩塌灌木与花 你的衣衫啊,就是九月那天的青云 我洗了,在我家琐碎的窗上许久未干 至...
    草柒阅读 329评论 2 3
  • 说实话,我很讨厌自己,讨厌那个懦弱胆小怕事的自己。 或许是从小家庭环境的影响,人人对我的印象就是随和,斯文,内敛。...
    jewelcell阅读 138评论 0 0
  • 1,今天地铁上有一些拥挤,有个黑人一声不吭地用力扒拉了我一下要往里走,一下子心里不悦的情绪上来了。马上情景换框法用...
    越来越中阅读 118评论 0 0