Unity&Springboot實(shí)現(xiàn)本地登陸驗(yàn)證
因?yàn)檫@里只能返回網(wǎng)頁(yè),但是我們需要返回登陸是否成功的數(shù)據(jù)所以下面還需要寫一個(gè)請(qǐng)求方法。如果登陸失敗則將session域中的id刪除,這樣在unity判斷是否登錄成功時(shí)會(huì)直接按請(qǐng)求錯(cuò)誤抓取
//登錄操作 @RequestMapping('/login') public String login(HttpServletRequest request, @RequestParam('userType') String userType, Map<String, Object> map,HttpSession session) {session.setAttribute('id',request.getParameter('id'));String id = session.getAttribute('id').toString();String password = request.getParameter('password');//如果是管理員登錄則查詢管理員信息表if(userType.equals('0')){ Administrators administrator = administratorsService.login(id, password); if(administrator != null){System.out.println('登陸成功');return 'redirect:/ScheduleInfo'; }else {map.put('msg','賬號(hào)或密碼錯(cuò)誤');//如果登陸失敗則將session域中的id刪除,這樣在unity判斷是否登錄成功時(shí)會(huì)直接按請(qǐng)求錯(cuò)誤抓取session.removeAttribute('id');return 'login'; }}else { //如果是普通用戶登錄則查找普通用戶表 Employees employee = employeesService.login(id, password); if(employee != null){if (employeesService.findJobById(id).getJob().equals('巡檢人員')){ System.out.println('登陸成功'); return 'redirect:/xInfo';}else { System.out.println('登陸成功'); return 'redirect:/wInfo';} }else {map.put('msg','賬號(hào)或密碼錯(cuò)誤');session.removeAttribute('id');return 'login'; }} }返回登錄是否成功和登陸用戶的id信息
這里使用 @ResponseBody注解,使返回的是數(shù)據(jù)而不是網(wǎng)頁(yè)
@RequestMapping('/getUserInfo') @ResponseBody public String getUserInfo(HttpSession session){System.out.println('收到unity登錄請(qǐng)求');//因?yàn)榈顷懯∫院髎ession域中的id會(huì)被刪除,所以判斷為null則登錄失敗if(session.getAttribute('id') != null){ String id = session.getAttribute('id').toString(); System.out.println('登陸成功'); return id ;}else { System.out.println('登陸失敗'); return null;} }Unity端的請(qǐng)求
一個(gè)簡(jiǎn)單的登陸注冊(cè)界面
上腳本,看注釋
using System.Collections;using UnityEngine;using UnityEngine.UI;using UnityEngine.SceneManagement;using UnityEngine.Networking;public class HttpHelper : MonoBehaviour{//發(fā)出登錄請(qǐng)求 private string postUrl = 'http://47.xx.75.xx:8080/login';//如果是本地運(yùn)行則將前面的47.96.75.29換成localhost //獲得登錄是否成功的數(shù)據(jù),也就是運(yùn)行上面第二個(gè)代碼的內(nèi)瓤 private string postUrl2 = 'http://47.xx.75.xx:8080/getUserInfo'; public GameObject[] uis; public GameObject backLoginObj; public Text massage; public Text countText; public Text passwordText; private const string userType = 'userType'; private const string userName = 'id'; private const string password = 'password'; public void loginTest() { //這個(gè)方法和登錄按鈕綁定,用于觸發(fā)異步方法PostStartCoroutine('Post'); } [System.Obsolete] IEnumerator Post() { //發(fā)送登錄表單,每個(gè)人不一樣,根據(jù)自己需要的表單參數(shù)來(lái),一般就是賬號(hào)密碼,這里的userType就是管理員和員工的分類,0是管理員,1是員工。WWWForm form = new WWWForm();form.AddField(userType, '0');form.AddField(userName, countText.text);form.AddField(password, passwordText.text);//這里發(fā)出了登錄請(qǐng)求//利用UnityWebRequest通過(guò)請(qǐng)求路徑這個(gè)和postman的操作類似,將表單發(fā)送出去UnityWebRequest request = UnityWebRequest.Post(postUrl, form);yield return request.SendWebRequest();if (request.isHttpError || request.isNetworkError){ Debug.LogError(request.error);}//這里獲取了登錄是否成功的數(shù)據(jù)UnityWebRequest request2 = UnityWebRequest.Get(postUrl2);yield return request2.SendWebRequest();//如果登陸失敗的Session域中的id是空的,所以會(huì)報(bào)錯(cuò),也就是判斷登陸是否成功的依據(jù)。if (request2.isHttpError || request2.isNetworkError){ massage.text = '登陸失敗,賬號(hào)或密碼錯(cuò)誤';}else{//反之如果登錄成功則獲得返回的數(shù)據(jù),這里就是用戶的id string receiveContent = request2.downloadHandler.text;//這是個(gè)普通的ui操作,我的構(gòu)想是如果登錄成功則將這些ui隱藏只顯示massage和一個(gè)返回鍵 foreach (GameObject ui in uis) {ui.SetActive(false); } massage.gameObject.SetActive(true); backLoginObj.SetActive(true);//如果返回的數(shù)據(jù)和用戶輸入時(shí)的賬號(hào)一樣時(shí)則判斷登陸成功 if (receiveContent == countText.text) {massage.text = '登陸成功,歡迎管理員' + receiveContent; } else//反之登陸失敗 {massage.text = '登陸失敗,賬號(hào)或密碼錯(cuò)誤'; }}StopCoroutine('Post'); } public void backLogin() {SceneManager.LoadScene('SampleScene'); }}
最后的運(yùn)行結(jié)果
到此這篇關(guān)于Unity&Springboot服務(wù)器/本地登陸驗(yàn)證的文章就介紹到這了,更多相關(guān)Unity&Springboot服務(wù)器/本地登陸驗(yàn)證內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. html小技巧之td,div標(biāo)簽里內(nèi)容不換行2. 使用css實(shí)現(xiàn)全兼容tooltip提示框3. 詳解盒子端CSS動(dòng)畫性能提升4. CSS hack用法案例詳解5. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單6. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera7. 讀大數(shù)據(jù)量的XML文件的讀取問(wèn)題8. 詳解瀏覽器的緩存機(jī)制9. HTML DOM setInterval和clearInterval方法案例詳解10. XML入門的常見(jiàn)問(wèn)題(一)
