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

来源:互联网 发布:炭知天下主要在哪里 编辑:程序博客网 时间:2024/06/08 13:45

开发一个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,都有一个隐藏的标签:

 <input 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语句确实能够让代码更加精简,并且用起来非常舒心。

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

原创粉丝点击