Unity&Springboot實(shí)現(xiàn)本地登陸驗(yàn)證
Springboot使用IDEA編譯器
IDEA上實(shí)現(xiàn)登錄驗(yàn)證
因?yàn)檫@里只能返回網(wǎng)頁,但是我們需要返回登陸是否成功的數(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)頁
@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ā)異步方法Post
StartCoroutine("Post");
}
[System.Obsolete]
IEnumerator Post()
{
//發(fā)送登錄表單,每個(gè)人不一樣,根據(jù)自己需要的表單參數(shù)來,一般就是賬號(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通過請(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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文搞懂java中類及static關(guān)鍵字執(zhí)行順序
這篇文章主要介紹了一文搞懂java中類及static關(guān)鍵字執(zhí)行順序,文章通過類的生命周期展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
淺析Java中XPath和JsonPath以及SpEL的用法與對(duì)比
XPath,即XML路徑語言,是一種用于在XML文檔中查找信息的語言,JsonPath是從XPath中發(fā)展而來的,專門用于JSON數(shù)據(jù)格式,本文主要來講講他們的用法與區(qū)別,需要的可以參考下2023-11-11
Spring自帶的校驗(yàn)框架Validation的使用實(shí)例
今天小編就為大家分享一篇關(guān)于Spring自帶的校驗(yàn)框架Validation的使用實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
使用proguard對(duì)maven構(gòu)建的springboot項(xiàng)目進(jìn)行混淆方式
文章介紹了如何使用ProGuard對(duì)Maven構(gòu)建的Spring Boot項(xiàng)目進(jìn)行混淆,并解決混淆后可能遇到的版本兼容性問題和類名沖突問題,主要步驟包括下載高版本的ProGuard、配置POM文件、添加ProGuard配置文件、修改Spring Boot啟動(dòng)文件以避免類名沖突2024-11-11
Spring如何使用@Indexed加快啟動(dòng)速度
這篇文章主要介紹了Spring如何使用@Indexed加快啟動(dòng)速度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
MyBatis常用動(dòng)態(tài)sql大總結(jié)
這篇文章主要給大家介紹了關(guān)于MyBatis常用動(dòng)態(tài)sql的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
ImportBeanDefinitionRegistrar手動(dòng)控制BeanDefinition創(chuàng)建注冊(cè)詳解
這篇文章主要為大家介紹了ImportBeanDefinitionRegistrar手動(dòng)控制BeanDefinition創(chuàng)建注冊(cè)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
使用IDEA搭建Hadoop開發(fā)環(huán)境的操作步驟(Window10為例)
經(jīng)過三次重裝,查閱無數(shù)資料后成功完成hadoop在win10上實(shí)現(xiàn)偽分布式集群,以及IDEA開發(fā)環(huán)境的搭建。一步一步跟著本文操作可以避免無數(shù)天坑2021-07-07

