经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » unity » 查看文章
Unity&Springboot实现本地登陆验证
来源:jb51  时间:2021/7/26 12:06:56  对本文有异议

Springboot使用IDEA编译器

IDEA上实现登录验证

因为这里只能返回网页,但是我们需要返回登陆是否成功的数据所以下面还需要写一个请求方法。
如果登陆失败则将session域中的id删除,这样在unity判断是否登录成功时会直接按请求错误抓取

  1. //登录操作
  2. @RequestMapping("/login")
  3. public String login(HttpServletRequest request, @RequestParam("userType") String userType, Map<String, Object> map,HttpSession session) {
  4.  
  5. session.setAttribute("id",request.getParameter("id"));
  6. String id = session.getAttribute("id").toString();
  7. String password = request.getParameter("password");
  8.  
  9. //如果是管理员登录则查询管理员信息表
  10. if(userType.equals("0")){
  11. Administrators administrator = administratorsService.login(id, password);
  12. if(administrator != null){
  13. System.out.println("登陆成功");
  14. return "redirect:/ScheduleInfo";
  15. }else {
  16. map.put("msg","账号或密码错误");
  17. //如果登陆失败则将session域中的id删除,这样在unity判断是否登录成功时会直接按请求错误抓取
  18. session.removeAttribute("id");
  19. return "login";
  20. }
  21. }else { //如果是普通用户登录则查找普通用户表
  22. Employees employee = employeesService.login(id, password);
  23. if(employee != null){
  24. if (employeesService.findJobById(id).getJob().equals("巡检人员")){
  25. System.out.println("登陆成功");
  26. return "redirect:/xInfo";
  27. }else {
  28. System.out.println("登陆成功");
  29. return "redirect:/wInfo";
  30. }
  31. }else {
  32. map.put("msg","账号或密码错误");
  33. session.removeAttribute("id");
  34. return "login";
  35. }
  36. }
  37. }

返回登录是否成功和登陆用户的id信息

这里使用 @ResponseBody注解,使返回的是数据而不是网页

  1. @RequestMapping("/getUserInfo")
  2. @ResponseBody
  3. public String getUserInfo(HttpSession session){
  4. System.out.println("收到unity登录请求");
  5. //因为登陆失败以后session域中的id会被删除,所以判断为null则登录失败
  6. if(session.getAttribute("id") != null){
  7. String id = session.getAttribute("id").toString();
  8. System.out.println("登陆成功");
  9. return id ;
  10. }
  11. else {
  12. System.out.println("登陆失败");
  13. return null;
  14. }
  15. }

Unity端的请求

一个简单的登陆注册界面

在这里插入图片描述

在这里插入图片描述

上脚本,看注释

  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using UnityEngine.SceneManagement;
  5. using UnityEngine.Networking;
  6.  
  7. public class HttpHelper : MonoBehaviour
  8. {
  9. //发出登录请求
  10. private string postUrl = "http://47.xx.75.xx:8080/login";//如果是本地运行则将前面的47.96.75.29换成localhost
  11. //获得登录是否成功的数据,也就是运行上面第二个代码的内瓤
  12. private string postUrl2 = "http://47.xx.75.xx:8080/getUserInfo";
  13. public GameObject[] uis;
  14. public GameObject backLoginObj;
  15. public Text massage;
  16. public Text countText;
  17. public Text passwordText;
  18. private const string userType = "userType";
  19. private const string userName = "id";
  20. private const string password = "password";
  21.  
  22. public void loginTest()
  23. {
  24. //这个方法和登录按钮绑定,用于触发异步方法Post
  25. StartCoroutine("Post");
  26. }
  27.  
  28. [System.Obsolete]
  29. IEnumerator Post()
  30. {
  31. //发送登录表单,每个人不一样,根据自己需要的表单参数来,一般就是账号密码,这里的userType就是管理员和员工的分类,0是管理员,1是员工。
  32. WWWForm form = new WWWForm();
  33. form.AddField(userType, "0");
  34. form.AddField(userName, countText.text);
  35. form.AddField(password, passwordText.text);
  36. //这里发出了登录请求
  37. //利用UnityWebRequest通过请求路径这个和postman的操作类似,将表单发送出去
  38. UnityWebRequest request = UnityWebRequest.Post(postUrl, form);
  39. yield return request.SendWebRequest();
  40. if (request.isHttpError || request.isNetworkError)
  41. {
  42. Debug.LogError(request.error);
  43. }
  44. //这里获取了登录是否成功的数据
  45. UnityWebRequest request2 = UnityWebRequest.Get(postUrl2);
  46. yield return request2.SendWebRequest();
  47. //如果登陆失败的Session域中的id是空的,所以会报错,也就是判断登陆是否成功的依据。
  48. if (request2.isHttpError || request2.isNetworkError)
  49. {
  50. massage.text = "登陆失败,账号或密码错误";
  51. }
  52. else
  53. {
  54. //反之如果登录成功则获得返回的数据,这里就是用户的id
  55. string receiveContent = request2.downloadHandler.text;
  56. //这是个普通的ui操作,我的构想是如果登录成功则将这些ui隐藏只显示massage和一个返回键
  57. foreach (GameObject ui in uis)
  58. {
  59. ui.SetActive(false);
  60. }
  61. massage.gameObject.SetActive(true);
  62. backLoginObj.SetActive(true);
  63. //如果返回的数据和用户输入时的账号一样时则判断登陆成功
  64. if (receiveContent == countText.text)
  65. {
  66. massage.text = "登陆成功,欢迎管理员" + receiveContent;
  67. }
  68. else//反之登陆失败
  69. {
  70. massage.text = "登陆失败,账号或密码错误";
  71. }
  72. }
  73. StopCoroutine("Post");
  74. }
  75. public void backLogin()
  76. {
  77. SceneManager.LoadScene("SampleScene");
  78. }
  79. }
  80.  

最后的运行结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

到此这篇关于Unity&Springboot服务器/本地登陆验证的文章就介绍到这了,更多相关Unity&Springboot服务器/本地登陆验证内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号