คำนำ
คุกกี้: คุกกี้เป็นเทคโนโลยีลูกค้าและโปรแกรมจะเขียนข้อมูลของผู้ใช้แต่ละคนไปยังเบราว์เซอร์ของผู้ใช้ในรูปแบบของคุกกี้
เมื่อผู้ใช้ใช้เบราว์เซอร์เพื่อเข้าถึงทรัพยากรเว็บในเซิร์ฟเวอร์เขาจะนำพื้นที่ข้อมูลของเขามาเองเพื่อให้ทรัพยากรเว็บประมวลผลข้อมูลของตนเอง
เซสชัน: เซสชันเป็นเทคโนโลยีฝั่งเซิร์ฟเวอร์ ด้วยการใช้เทคโนโลยีเซสชันเซิร์ฟเวอร์สามารถสร้างวัตถุเซสชันของตัวเองสำหรับเบราว์เซอร์ของผู้ใช้แต่ละคนเมื่อทำงาน เนื่องจากเซสชันเป็นเอกสิทธิ์ของเบราว์เซอร์ของผู้ใช้เมื่อผู้ใช้เข้าถึงทรัพยากรเว็บของเซิร์ฟเวอร์ผู้ใช้สามารถใส่ข้อมูลของตัวเองในเซสชัน เมื่อผู้ใช้เข้าถึงทรัพยากรเว็บอื่น ๆ ในเซิร์ฟเวอร์อีกครั้งทรัพยากรเว็บอื่น ๆ จะมาจากเซสชันของผู้ใช้
นำข้อมูลออกมาเพื่อให้บริการผู้ใช้
ความแตกต่างที่สำคัญระหว่างเซสชันและคุกกี้:
เรามักจะใช้เซสชันเพื่อจัดเก็บข้อมูลการเข้าสู่ระบบของผู้ใช้เพื่อตรวจสอบว่าผู้ใช้ออนไลน์หรือไม่ นี่เป็นโซลูชันด้านเว็บที่ง่ายที่สุดที่จะนำไปใช้ บทความนี้ใช้กรอบ SSM (Spring, SpringMVC, MyBatis) เป็นผู้ให้บริการเพื่อใช้ระบบเข้าสู่ระบบนี้โดยเฉพาะ
วิธีนี้มีดังนี้:
1. ส่งชื่อผู้ใช้และรหัสผ่านไปยังอินเตอร์เฟสแบ็กเอนด์ผ่านส่วนหน้า หลังจากอินเทอร์เฟซได้รับค่ามันจะถูกเข้ารหัส MD5 เปรียบเทียบกับฟิลด์ในฐานข้อมูลส่งคืนสถานะไปยังส่วนหน้าและปลายด้านหน้าจะกระโดดหน้าตามค่าคืน
คลาสเครื่องมือเข้ารหัส MD5
Public String encoderbymd5 (String str) พ่น nosuchalgorithmexception, unsupportencodexception {// กำหนดวิธีการคำนวณ messagedigest md5 = messageDigest.getInstance ("md5"); base64Encoder base64en = ใหม่ base64Encoder (); // encrypted สตริงสตริง newsstr = base64en.encode (md5.digest (str.getBytes ("UTF-8"))); ส่งคืน Newsr; -เลเยอร์ Dao และ Mapper
<select id = "valiteuser" parameterType = "java.lang.string" resultType = "com.heitian.ssm.model.userinfo"> เลือกรหัสผ่านจาก t_user ที่ชื่อผู้ใช้ = #{ชื่อผู้ใช้}คลาสการใช้งานชั้นบริการ
สตริงสาธารณะ valiteuser (userInfo userInfo) {ลอง {userInfo userDemo = userDao.ValiteUser (encoderBymd5 (userInfo.getUserName ()); if (userInfo.getPassword (). เท่ากับ (userDemo.getPassword ())) {return "pass"; }} catch (exception e) {e.printstacktrace (); ส่งคืน "ข้อผิดพลาด"; } return "ปฏิเสธ"; -เลเยอร์คอนโทรลเลอร์
@ResponseBody @requestmapping ("/logginuser") hashmap สาธารณะ <สตริง, วัตถุ> logginuser (คำขอ httpservletrequest, userinfo userinfo) {hashmap <string, object> result = new hashmap <string, object> (); httpsession session = request.getSession (); System.out.println ("เข้าสู่ระบบล้มเหลว"); สถานะสตริง = userservice.valiteuser (userInfo); if (status.equals ("pass")) {session.setAttribute ("current_user", userInfo.getUserName ()); result.put ("สถานะ", "pass"); } else {if (status.equals ("ปฏิเสธ")) {result.put ("สถานะ", "ปฏิเสธ"); } else {result.put ("สถานะ", "ข้อผิดพลาด"); }} ผลการส่งคืน; -โดยการส่งคืนข้อมูลสถานะเราสามารถพิจารณาได้ว่าการเข้าสู่ระบบนั้นสำเร็จหรือไม่ หากประสบความสำเร็จให้เขียนคู่คีย์ชื่อผู้ใช้ไปยังเซสชัน
2. เมื่อเข้าถึงหน้าอื่น ๆ วิธีการตรวจสอบว่าผู้ใช้ใดเข้าสู่ระบบออนไลน์หรือไม่? ฉันใช้ JS เพื่อรับค่าเซสชันเพื่อตัดสิน
นั่นคือ: ก่อนอื่นรับค่าของเซสชัน ถ้ามันว่างเปล่าหรือว่างก็หมายความว่าเซสชันไม่มีพฤติกรรมการเข้าสู่ระบบก่อนหน้านี้ เราเปลี่ยนเส้นทางไปยังหน้าแรกโดยอัตโนมัติ หากมีค่าหมายความว่ามีพฤติกรรมการเข้าสู่ระบบและผู้ใช้เข้าสู่ระบบออนไลน์คือ current_user
ในเวลานี้เราสามารถใช้ชื่อผู้ใช้เพื่อปรับอินเทอร์เฟซพื้นหลัง
<script language = "javascript"> $ (เอกสาร) .ready (function () {var myname = "<%= session.getAttribute (" current_user ")%>"; var projectid1 = "<%= request.getAttribute (" projectId ")%>" } </script>3. การออกจากระบบของผู้ใช้
ออกจากระบบนั่นคือล้างค่าในเซสชันและอินเทอร์เฟซออกจากระบบจะเปิดจากพื้นหลัง
@RequestMapping ("/quituser") String quituser สาธารณะ (คำขอ httpservletRequest) {httpsession session = request.getSession (); Session.RemoveAttribute ("current_user"); กลับ "ดัชนี"; -สิ่งนี้ตระหนักถึงระบบการจัดการผู้ใช้จากการเข้าสู่ระบบไปสู่การออกจากระบบ แต่นี่เป็นระบบพื้นฐานที่สุดและความปลอดภัยเป็นปัญหาใหญ่ดังนั้นโซลูชันการตรวจสอบเช่นโทเค็น JWT ยังคงมีประโยชน์มาก
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com