Unity&Springboot服务器/本地登陆验证
Springboot使用IDEA编译器
IDEA上实现登录验证
因为这里只能返回网页,但是我们需要返回登陆是否成功的数据所以下面还需要写一个请求方法。 如果登陆失败则将session域中的id删除,这样在unity判断是否登录成功时会直接按请求错误抓取
@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","账号或密码错误");
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","账号或密码错误");
session.removeAttribute("id");
return "login";
}
}
}
返回登录是否成功和登陆用户的id信息
这里使用 @ResponseBody注解,使返回的是数据而不是网页
@RequestMapping("/getUserInfo")
@ResponseBody
public String getUserInfo(HttpSession session){
System.out.println("收到unity登录请求");
if(session.getAttribute("id") != null){
String id = session.getAttribute("id").toString();
System.out.println("登陆成功");
return id ;
}
else {
System.out.println("登陆失败");
return null;
}
}
Unity端的请求
一个简单的登陆注册界面
上脚本,看注释
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using UnityEngine.Networking;
public class HttpHelper : MonoBehaviour
{
private string postUrl = "http://47.xx.75.xx:8080/login";
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()
{
StartCoroutine("Post");
}
[System.Obsolete]
IEnumerator Post()
{
WWWForm form = new WWWForm();
form.AddField(userType, "0");
form.AddField(userName, countText.text);
form.AddField(password, passwordText.text);
UnityWebRequest request = UnityWebRequest.Post(postUrl, form);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
UnityWebRequest request2 = UnityWebRequest.Get(postUrl2);
yield return request2.SendWebRequest();
if (request2.isHttpError || request2.isNetworkError)
{
massage.text = "登陆失败,账号或密码错误";
}
else
{
string receiveContent = request2.downloadHandler.text;
foreach (GameObject ui in uis)
{
ui.SetActive(false);
}
massage.gameObject.SetActive(true);
backLoginObj.SetActive(true);
if (receiveContent == countText.text)
{
massage.text = "登陆成功,欢迎管理员" + receiveContent;
}
else
{
massage.text = "登陆失败,账号或密码错误";
}
}
StopCoroutine("Post");
}
public void backLogin()
{
SceneManager.LoadScene("SampleScene");
}
}
最后的运行结果
|