一个多种登录方式的解决办法

开发一个web网站,用到了多种登录方式:

  • 手机验证码登录
  • 用户名密码登录
  • 微信登录

    login.jsp如下:
    只列举了手机登录的代码,同一个页面里还有另外两个div,用boostrap的切换卡来进行动态切换。

<div class="phoneLogin wn_new_l_items" id="phoneLogin">
    <a href="#" class="dongtai">手机动态码登录(请选择国际区号)a>
    <form id="phoneSubmit" method="post">
    <div class="form-group">
        <div class="input-group">
        <input type="text" id="accessname" name="accessname" placeholder="手机号" >
        <input type="button" class="getcode" id="btnSendCode" name="btnSendCode" value="获取动态密码" onclick="sendMessage()">
        div>
    <input type="text" id="code" name="code" placeholder="动态密码">
    div>
        <button type="submit" id="loginMobileButton">登录button>
        <input type="hidden" name="loginType" value="1"> 
        <input type="hidden" value="">
    form>
div>

这三个登录页面是放在一个jsp里的,分三个表单,为了简化提交表单的方式,这三个表单都提交到一个controller方法里。

如何进行判断,这里用了一个较为灵活的处理方法,每个登录的div,都有一个隐藏的标签:

 type="hidden" name="l_type" value="1"> 

三种登录方式,l_type分别为1,2,3。
这时候每次传到controller方法的参数是四个(String accessname,String password,String code,int loginType),分别是用户名,密码,验证码,登入类型。

此时的controller方法可以这么写:

@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(String accessname,String password,String code,int loginType){
        User user = iUserService.getUserByAccessname(accessname);
        if(user==null) loginType=0;
        //判断登录类型
        switch(loginType){
        case 0://注册
            return "redirect:register?accessname="+accessname;
        case 1://手机登录
            return "redirect:phoneLogin?accessname="+accessname+"&code="+code;
        case 2://密码登录
            return "redirect:passwordLogin?accessname="+accessname+"&password="+password;
        default://微信登录尚未实现
            return null;
        }
}

相比if语句而言,有时候switch语句确实能够让代码更加精简,并且用起来非常舒心。

在这里我只是记录一下所获的启示,没有写的太详尽,在一些细节处理上还是需要更加用心才行。

你可能感兴趣的:(java)