如果你想开发一个应用(1-15)

登录服务##

想想一个应用,第一次打开,一般来说都是登录页,所以在服务端先完成一个用于用户登录的action,首先创建UserController,然后创建Login的action,代码如下:

@Controller
public class UserController extends BaseController {
    @Autowired
    UserService userService;
    @ResponseBody
    @RequestMapping(value = "/login",method = {RequestMethod.POST})
    public Object login(@RequestBody Map map) {
       return null;
    }
}

想一下登录服务步骤:

  1. 通过用户名在db中查询此用户
  2. 如果查询到用户,则比对密码,否则返回登录失败
  3. 如果密码比对成功,创建token,否则返回登录失败
  4. 返回token

所以最终UserService内的服务方法实现如下:

public String login(String username, String password) {
    //判断用户名密码是否符合(此时不加盐加密)
    User user=userRepository.getUserByName(username);
    if(user!=null&&user.getPassword().equals(password)){
        //创建token
        Token token=TokenUtil.generateToken(UUID.randomUUID().toString(),user.getId());
        return token.getSignature();
    }
    return "";
}

JPA内的略

此时的action的内容就很简单了:

@ResponseBody
@RequestMapping(value = "/login",method = {RequestMethod.POST})
public Object login(@RequestBody Map map) {
    String token = userService.login(map.get("username").toString(), map.get("password").toString());
    if (token.equals("")) {
        return result(200, "登录失败", "");
    }
    return result(token);
}

接下来用postman来测试一下,我们在db中准备两条数据:

然后打开postman,输入参数,查看一下:

点击send后,发现返回了错误信息:

这是因为发送请求参数的格式错了,还记得上一章,为了配合前端的请求方式,服务端的请求接收方式改为了RequestBody的方式,所以,前端必须使用json方式发送,恰好我们的postman也支持这种方式,修改为:

这样点击发送就可以了,这时候的返回是:

{
    "msg": "",
    "code": 200,
    "data": "0c09472d6d3bf978fe2da968f774e002"
}

data节点就是我们所需要的token

登录注册客户端##

客户端,客户端,这里我都不知道该如何写了,毕竟我也是一个后端的开发人员,而前端貌似必备的技能,如less啥的,都不会,只能写css和js,所以这里我只能贴出我现有的代码,然后针对vue的一些内容进行一下说明,下面在views文件夹内创建Login.vue文件。

Login.vue:

<style scoped >
.login{
    background:#6fc2f3;
    width:100%;
    height: 100%;
}
.logo{
    width:50%;
    margin:0px auto;
}
.logo img{
    width: 100%;
    border-radius: 10px;
    border:3px solid #075d8b;
}
</style>
<template>
    <div class="login">
        <div style="height:23%"></div>
        <div class="logo">
        <img src="../assets/logo.jpg">
        </div>
        <div style="margin-top:10px; text-align:center">
            <mu-content-block>
                <mu-text-field hintText="请输入邮箱" v-model="username" fullWidth inputClass="text_center"/><br/>
                <mu-text-field hintText="请输入密码" v-model="password"  type="password" inputClass="text_center" fullWidth /><br/>
                <mu-raised-button label="登陆" primary fullWidth  v-on:click="login"/>
                <a @click="toRegister" style="color:#fafafa;margin-top:5px;display:block">没有账号?去注册吧</a>
            </mu-content-block>
        </div>
        <mu-dialog :open="dialog">
            请您检查用户名或密码,如果确认输入无误,可以去微信公众号"还没有申请呢"报告bug<br>
            <mu-flat-button label="确定"  slot="actions" fullWidth  @click="close"/>
        </mu-dialog>
    </div>
</template>
<script>
    export default {
        data () {
            return {
                username: "",
                password: "",
                dialog:false,
            }
        },
        methods:{
            login:function (event) {
                if(event){
                    var data={
                        username:this.username,
                        password:this.password
                    }
                    this.$http.post("/login",data).then(res=>{
                        var result=res.data;
                        if(result.msg==""){
                            this.$store.commit('setToken',result.data);//1
                            this.$router.push({name:"Index"})//2
                        }else{
                            this.dialog=true;//3
                        }
                    },res=>{
                    })
                }
            },
            toRegister:function(event){
                if(event){
                    this.$router.push({name:"Register"})
                }
            },
            close:function(event){
                this.dialog=false;
            }
        }
    }
</script>

在template节点内可以看到,这个页包含了登录页所需的一切功能:

  • 用户名输入框
  • 密码输入框
  • 提交按钮
  • 注册入口
  • 找回密码入口

<mu-content-block>这种mu打头的标签为MuseUI库所提供的标签,其余的为普通html标签。

输入npm run dev后运行的效果如下:

5.PNG

需要说明的几点:

  1. 注释1,表示将返回的token值存储在vuex状态内
  2. 登录成功后,将当前页面换为index页,index需在router内注册
  3. 登录失败,弹出提示框,提示信息

router内注册的代码:

export default new Router({
    mode: 'history',
    routes: [
        {
            path: '/',
            name: 'Index',
            component: Index
        },
        {
            path: '/login',
            name: 'Login',
            component: Login
        },
        {
            path: '/Register',
            name: 'Register',
            component: Register
        },
        {
            path: '/ForgetPassword',
            name: 'ForgetPassword',
            component: ForgetPassword
        }
    ]
})

其中Indel,Register,ForgetPassword的代码可参考github上的源码

继续为了东半球最好的记录软件努力

谢谢观看

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