javaWeb鎖屏的簡單實現


簡單介紹:需求上有個小功能,用戶登錄后點擊用戶名,可以點擊鎖屏,鎖屏解除,需要輸入正確的密碼才能進入管理后台頁面enheng(*/ω\*)(*/ω\*)(*/ω\*)

思路簡介:其實剛看到要做鎖屏,第一反應就是沒做過啊,懵逼,后來中午和同事去吃飯的時候,我啪的一下,就把筆記本合上了,loading·············,吃完飯,回來,打開本子,輸入完密碼,就准備去點擊登錄那個箭頭,突然反應過來,卧槽,這不就是鎖屏么,給他個鎖屏界面不就行了么,不過還要有幾個表單,能夠實現登錄,不就相當於解鎖了么!!!haヾ(◍°∇°◍)ノ゙༺༺超༒神༻༻

//html代碼 點擊鎖屏進入controller的lock方法
<li>
<a href="lock" >
<i class="icon-lock"></i> 鎖屏 </a>
</li> 
//controller代碼
/**
* 跳轉鎖屏頁面
*/
@RequestMapping(value = "/main/lock")
public String lock(Model model) throws Exception {
Session session = Jurisdiction.getSession();
OhSysPriUser user = (OhSysPriUser)session.getAttribute(SessionConst.SESSION_USER);
String name = user.getLoginName();
model.addAttribute("username", name);
logger.info("進入鎖屏");
return "/lock";//進入鎖屏頁面
//html鎖屏頁面登錄
<form action="locklogin.shtml" method="post" name="lockloginForm" id="lockloginForm">
<div class="control-group normal_text"><h3>鎖屏登錄</h3></div>
<div class="control-group">
<input id="inputbtn" class="form-contro" type="text" autocomplete="off"
placeholder="Username" name="username" th:value="${username}" readonly="readonly"/>
</div>
<div class="control-group">
<input type="password" name="password" id="password" placeholder="請輸入密碼"
class="keypad" keypadMode="full" allowKeyboard="true" value=""/>
</div>
<div class="form-actions">
<div style="width:86%;padding-left:8%;">
<span class="pull-right">
<a onclick="locklogin();" class="flip-link btn btn-info" id="to-recover">登錄</a>
</span>
</div>
<div style="width:86%;padding-left:8%;">
<span class="pull-left">
<a href="login" class="flip-link btn btn-info" id="to-login">前往登錄頁面</a>
</span>
</div>
</div>
</form> 
/**
* js代碼 鎖屏登錄
*/
function locklogin() {
if ($("#password").val() == "") {
$("#password").tips({
side: 2,
msg: '密碼不得為空',
bg: '#AE81FF',
time: 3
});
$("#password").focus;
}else{
$.ajax({
type: "POST",
url: 'locklogin',
data: {
username : $("#inputbtn").val(),
password : $("#password").val()
},
dataType: 'json',
cache: false,
success : function (data) {
if(data=="success"){
window.location.href="index";//成功回到主頁
}else{
$("#password").tips({
side: 2,
msg: data,
bg: '#ff4a54',
time: 3
});
$("#password").val("");
$("#password").focus;
}
}
});
}
/**
* Controller代碼 鎖屏登陸
*
* @param username
* @param password
* @param request
* @param model
* @return
* */
@ResponseBody
@RequestMapping(value = "/main/locklogin", method = RequestMethod.POST, produces = "text/html; charset=utf-8")
public String locklogin(String username, String password, HttpServletRequest request, Model model) {
String error = "";
try {
model.addAttribute("username", username);
if (!request.getMethod().equals("POST")) {
model.addAttribute("errors","支持POST方法提交!");
}
if (Tools.isEmpty(username) || Tools.isEmpty(password)) {
error = "密碼不能為空!";
}
// 想要得到 SecurityUtils.getSubject() 的對象..訪問地址必須跟 shiro 的攔截地址內.不然后會報空指針
Subject user = SecurityUtils.getSubject();
// 用戶輸入的賬號和密碼,,存到UsernamePasswordToken對象中..然后由shiro內部認證對比,
// 認證執行者交由ShiroDbRealm中doGetAuthenticationInfo處理
// 當以上認證成功后會向下執行,認證失敗會拋出異常
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
user.login(token);
error = "success";
logger.info("解鎖成功");
}catch (AuthenticationException e) {
token.clear();
request.setAttribute("error", "密碼不正確!");
error = "密碼不正確!";
}
} catch (Exception e) {
e.printStackTrace();
error = "登錄異常,請聯系管理員!";
logger.info("登錄異常,請聯系管理員!");
// 注銷登錄
logger.info(">>>>>>>>>> Logout");
SecurityUtils.getSubject().logout();
}
return error;
}

 總結:剛拿到鎖屏,瞬間懵逼,不過總得去做不是么,ヾ(◍°∇°◍)ノ゙

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM