1. 程式人生 > >乾貨來襲,java使用者登入與登出(前臺+後臺 框架springboot)

乾貨來襲,java使用者登入與登出(前臺+後臺 框架springboot)

任何專案都存在使用者,自然也存在著使用者的登入和登出。使用者登入和登出的前臺和後臺頁面設定網上有很多版本,但大多數沒有整理。現在將前臺與後臺程式碼簡單整理下,供大家參考 ,有什麼問題可以在評論區回覆我就行了!

圖片說明:圖(1)為登入頁面;圖(2)為登入報錯頁面,當用戶輸錯使用者名稱或者密碼時,登入報錯如紅字部份所示;圖(3)為選擇記住使用者名稱後登出後返回的頁面。

程式碼說明:第一部分為前臺ftl頁面程式碼,第二部分為後臺controller程式碼,頁面樣式你們自己調整下。

專案框架:springboot  

頁面:ftl

圖片如下所示:

         (1)

           (2)

    (3)

<div class="row">
                <div class="col-md-4 col-md-offset-4">
                    <div class="account-box"> 
                        <form role="form" action="/user/login" method="post" id="login_form">
                            <div class="form-group">
                                <label for="yhm">使用者名稱</label>
                                <input type="text" id="yhm" name="yhm" class="form-control" >
                            </div>
                            <div class="form-group">  
                                <label for="mm">密碼</label>
                                <input type="password" id="mm" name="mm" class="form-control" >
                            </div>
                            <div class="checkbox pull-left">
                                <label><input type="checkbox" id="remeberyhm">記住使用者名稱</label>
                                <span style="color:red;">
                                	<#if errMsg??>
                                	使用者名稱或密碼錯誤
                                	</#if>
                                </span>
                            </div>
                            <button class="btn btn btn-primary pull-right" type="button" onclick="remeber()" >登 錄</button>
                        </form>
                        <a class="forgotLnk" href="index.html"></a>                        
                        <div class="row-block">
	                        <div class="row"></div>
                        </div>
                   </div>
               </div>

<script type="text/javascript">
    $(function () {   	
    	var yhm = $.cookie('yhm');
      	var mm = $.cookie('mm');      
   		//頁面載入的時候從cookie中取出使用者名稱和密碼填充對應的輸入框
       	$('#yhm').val(yhm);      
        $("#mm").val(mm);
        //選中儲存祕密的複選框 
            if(yhm != null && yhm != '' && mm != null && mm != ''){
    		$("#remeberyhm").attr('checked',true);
		}
    });  
    function remeber(){    	
    	var yhm = $("#yhm").val();
    	var mm = $("#mm").val();  	
    	//判斷複選框的選擇狀態新增cookie
    	if ($("#remeberyhm").is(":checked")) {		
    		//儲存一個帶7天期限的cookie
    	   $.cookie("yhm", yhm, { expires: 7 });
    	   $.cookie("mm", mm, { expires: 7 });
    	}else {   	    
    	   $.cookie("yhm", "", { expires: -1 });
    	   $.cookie("mm", "", { expires: -1 });
    	}
    	//提交表單
    	$("#login_form").submit();
    }    
    //登入按鈕與鍵盤迴車繫結
    function IsEnterKeyPress(){
    	var lKeyCode = (navigator.appname=="Netscape")?event.which:window.event.keyCode;
    	if(lKeyCode == 13){
    		remeber();
    	}   	
    }
</script>

/**
	 * 使用者登入
	 * @param st
	 * @param request
	 * @return
	 */
	@RequestMapping(value="/login")
	public ModelAndView login(User st, QueryParametersVo qvo, HttpServletRequest request){
		ModelAndView result = new ModelAndView("main");		
		qvo.setPageNum(0);
		qvo.setPageSize(0);	
		ModelAndView errResult = new ModelAndView("login_new");
		List<Jscd> fristList = null;
		try {
			User user = userService.login(st);//登入
			if(user!=null){
				fristList = JscdService.getByJsId(user.getRole().getRoleid());//根據角色id查詢對應的選單集合
				request.getSession().setAttribute("yh", user);//將使用者資訊放到session中
				request.getSession().setMaxInactiveInterval(3600);//設定session儲存時間,以秒為單位,3600=60*60即為60分鐘
				result.addObject("list", new PageInfo<Jscd>(fristList));
				return result;
			}else{
				errResult.addObject("errMsg","使用者名稱或密碼錯誤");
			}
		} catch (Exception e) {
			errResult.addObject("errMsg", "資料異常!");
			e.printStackTrace();
		}
				
		return errResult;
		
	}
	/**
	 * 使用者登出
	 * @param request
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value="/logout")
	public ModelAndView logout(HttpServletRequest request){
		ModelAndView result = new ModelAndView("login_new");
		HttpSession session = request.getSession();//獲取當前session
		if(session!=null){
			User user = (User)session.getAttribute("yh");//從當前session中獲取使用者資訊
			session.invalidate();//關閉session
		}
		return result;
		
	}