国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語(yǔ)言|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - JavaWeb基于Session實(shí)現(xiàn)的用戶登陸注銷(xiāo)方法示例

JavaWeb基于Session實(shí)現(xiàn)的用戶登陸注銷(xiāo)方法示例

2021-02-26 13:16linuxidc JAVA教程

為了安全起見(jiàn),session常常用來(lái)保存用戶的登錄信息。那么服務(wù)器是怎么來(lái)實(shí)現(xiàn)的呢?下面這篇文章就來(lái)給大家介紹了關(guān)于JavaWeb基于Session實(shí)現(xiàn)的用戶登陸注銷(xiāo)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

Cookie:cookie是客戶端技術(shù),程序把每個(gè)用戶的數(shù)據(jù)以cookie的形式寫(xiě)給用戶各自的瀏覽器。

當(dāng)用戶使用瀏覽器再去訪問(wèn)服務(wù)器中的web資源時(shí),就會(huì)帶著各自的數(shù)據(jù)區(qū),這樣,web資源處理的就是各自的數(shù)據(jù)了。

Session:session是服務(wù)器端技術(shù),利用session技術(shù),服務(wù)器在運(yùn)行時(shí)可以為每一個(gè)用戶的瀏覽器創(chuàng)建其獨(dú)享的session對(duì)象,由于session為用戶瀏覽器獨(dú)享,所以用戶在訪問(wèn)服務(wù)器的web資源時(shí),可以把各自的數(shù)據(jù)放在session中,當(dāng)用戶再次去訪問(wèn)服務(wù)器中的其他web資源時(shí),其他web資源再?gòu)挠脩舾髯缘膕ession
取出數(shù)據(jù)為用戶服務(wù)。

Session和Cookie的主要區(qū)別:

  • Cookie是把用戶的數(shù)據(jù)寫(xiě)給用戶的瀏覽器
  • Session技術(shù)把用戶的數(shù)據(jù)寫(xiě)到用戶獨(dú)占的session中。
  • Session對(duì)象由服務(wù)器創(chuàng)建,開(kāi)發(fā)人員可以調(diào)用request對(duì)象的getSession方法得到session對(duì)象。

我們常常通過(guò)Session來(lái)存儲(chǔ)用戶的部分登陸信息來(lái)驗(yàn)證用戶是否在線,這應(yīng)該時(shí)最容易實(shí)現(xiàn)的一種Web端方案,本文以SSM(Spring、SpringMVC、myBatis)框架為載體,來(lái)具體實(shí)現(xiàn)這套登陸系統(tǒng)。

方法如下:

1.通過(guò)前端傳遞用戶名密碼到后端接口,接口拿到值后,對(duì)其進(jìn)行 MD5 加密,與數(shù)據(jù)庫(kù)中的字段進(jìn)行比較,返回狀態(tài)給前端,前端根據(jù)返回值進(jìn)行頁(yè)面跳轉(zhuǎn)。

MD5加密工具類

?
1
2
3
4
5
6
7
8
public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{
    //確定計(jì)算方法
    MessageDigest md5=MessageDigest.getInstance("MD5");
    BASE64Encoder base64en = new BASE64Encoder();
    //加密后的字符串
    String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
    return newstr;
  }

DAO層以及Mapper

?
1
2
3
4
<select id="valiteUser" parameterType="java.lang.String" resultType="com.heitian.ssm.model.Userinfo">
    SELECT password FROM t_user
    WHERE username = #{username}
</select>

Service層實(shí)現(xiàn)類

?
1
2
3
4
5
6
7
8
9
10
11
12
public String valiteUser(Userinfo userinfo) {
    try{
      Userinfo userdemo=userDao.valiteUser(EncoderByMd5(userinfo.getUsername()));
      if(userinfo.getPassword().equals(userdemo.getPassword())){
        return "pass";
      }
    }catch (Exception e){
      e.printStackTrace();
      return "error";
    }
    return "refuse";
  }

Controller層

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@ResponseBody
@RequestMapping("/loginUser")
public HashMap<String,Object> loginUser(HttpServletRequest request, Userinfo userinfo){
  HashMap<String,Object> result=new HashMap<String, Object>();
  HttpSession session = request.getSession();
  System.out.println("login fail");
  String status=userService.valiteUser(userinfo);
  if(status.equals("pass")){
    session.setAttribute("CURRENT_USER",userinfo.getUsername());
    result.put("status","pass");
  }else{
    if(status.equals("refuse")){
      result.put("status","refuse");
    }else {
      result.put("status","error");
    }
  }
  return result;
}

通過(guò)返回status信息,來(lái)判斷登陸是否成功,如果成功則將Session中寫(xiě)入用戶名鍵值對(duì)。

2.當(dāng)其他頁(yè)面訪問(wèn)時(shí),如何判斷是否有用戶登陸在線呢,我通過(guò)JS來(lái)取Session值來(lái)判斷。

即:先去拿Session的值,如果拿到為空或?yàn)閚ull,則說(shuō)明此會(huì)話在此之前沒(méi)有登陸行為,我們自動(dòng)將其重定向到首頁(yè),如果有值,則說(shuō)明有登陸行為,且登陸在線的用戶為CURRENT_USER

所取出來(lái)的值,這時(shí)我們?cè)谟糜脩裘フ{(diào)后臺(tái)接口即可。

?
1
2
3
4
5
6
7
8
<script language="JavaScript">
  $(document).ready(function(){
      var myName="<%=session.getAttribute("CURRENT_USER")%>";
      var projiectid1= "<%=request.getAttribute("projectid")%>";
      if(myName=="null"){
        window.location.href="/page/toindex" rel="external nofollow" ;
      }
</script>

3.用戶注銷(xiāo)

注銷(xiāo),即清除Session中的值即可,由后臺(tái)開(kāi)放一個(gè)注銷(xiāo)接口。

?
1
2
3
4
5
6
@RequestMapping("/quitUser")
  public String quitUser(HttpServletRequest request){
    HttpSession session = request.getSession();
    session.removeAttribute("CURRENT_USER");
    return "index";
  }

這樣就實(shí)現(xiàn)了一套從登陸到注銷(xiāo)的用戶管理體系,但是這是一種最基礎(chǔ)的體系,安全性由很大的問(wèn)題,所以類似于JWT TOKEN之類的驗(yàn)證方案還是很有用武之地的。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

原文鏈接:http://www.linuxidc.com/Linux/2017-12/149087.htm

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品www久久久久久广东 | 亚洲免费观看视频 | 国偷自产av一区二区三区 | 日韩免费高清视频 | 成人片免费看 | 日韩成人片 | theporn国产在线精品 | 日韩av在线中文字幕 | 亚洲免费不卡视频 | 亚洲免费视频一区二区 | 97久久精品午夜一区二区 | 国产视频一区二区 | 亚洲欧美在线观看 | 看亚洲一级毛片 | 成人午夜免费视频 | 99999色| 韩日av在线| 久久精品电影网 | 亚洲成人日韩在线 | 亚洲欧美视频二区 | 成人精品一区 | 视频一区在线 | а√天堂资源中文最新版地址 | 色综合久久88色综合天天 | 看av网站| 欧美精品1区2区3区 欧洲一区在线 | 国产 欧美 日产久久 | 久久久一 | 亚洲电影在线 | 国产视频一区二区在线 | 欧美日韩一区二区在线 | 国产一区二区三区在线免费观看 | 日韩精品影院 | 欧美九九九 | 国产精品永久免费自在线观看 | 国产精选一区二区三区不卡催乳 | 亚洲欧美在线观看 | 欧美人妖在线 | 色九九 | 高清一区二区 | 中文字幕精品一区 |