简单介绍:需求上有个小功能,用户登录后点击用户名,可以点击锁屏,锁屏解除,需要输入正确的密码才能进入管理后台页面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;
}

总结:刚拿到锁屏,瞬间懵逼,不过总得去做不是么,ヾ(◍°∇°◍)ノ゙

javaWeb锁屏的简单实现的更多相关文章

  1. iOS开发——使用技术OC篇&简单九宫格锁屏功能的实现与封装

    简单九宫格锁屏功能的实现与封装 首先来看看最后的实现界面. 在这开始看下面的内容之前希望你能先大概思考活着回顾一下如果 你会怎么做,只要知道大概的思路就可以. 由于iphone5指纹解锁的实现是的这个 ...

  2. 【腾讯Bugly干货分享】浅谈Android自定义锁屏页的发车姿势

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57875330c9da73584b025873 一.为什么需要自定义锁屏页 锁屏 ...

  3. 【WP 8.1开发】一键锁屏

    在WP8的时候,关于如何关闭屏幕,国内外都有不少文章了,大家有兴趣地可以搜搜,很多,我就不给链接了,因为稍后我的例子中会有. 其实,关闭屏幕是调用了未开放的API,正因为这个API未开放的,不敢保证所 ...

  4. web桌面程序之锁屏功能分析

    这是一个在操作系统里比较常见的功能,但在web里实现,有哪些需要注意的呢? 1.如何真正的实现锁屏? 2.如何避免通过技术手段绕过锁屏? 我个人总结出2点需要特别注意的地方,下面就分别进行分析. 第一 ...

  5. 浅谈 Android 自定义锁屏页的发车姿势

    作者:blowUp,原文链接:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653577446&idx=2&sn= ...

  6. 锁屏上显示Activity

    在Android中,有些比较强的提醒,需要用户紧急处理的内容.需要唤醒屏幕,甚至在锁定屏幕的情况下,也要显示出来.例如,来电界面和闹钟提醒界面.这是怎样实现的呢? 其实,实现起来非常简单.只要给Act ...

  7. iOS开发之应用内检测手机锁屏,解锁状态

    iPhone的锁屏监测分为两种方式监听: 1. 程序在前台,这种比较简单.直接使用Darwin层的通知就可以了: #import <notify.h> #define Notificati ...

  8. iOS10新特性之CallKit开发详解:锁屏接听和来电识别

    国庆节过完了,回家好好休息一天,今天好好分享一下CallKit开发.最近发现好多吃瓜问CallKit的VoIP开发适配,对iOS10的新特性开发和适配也在上个月完成,接下来就分享一下VoIP应用如何使 ...

  9. 技术解析:锁屏绕过,三星Galaxy系列手机也能“被”呼出电话

    近期,由两位安全研究人员,Roberto Paleari及Aristide Fattori,发布了关于三星Galaxy手机设备安全漏洞的技术细节.据称,Galaxy手机可在锁屏状态下被未授权的第三方人 ...

随机推荐

  1. 区分defer和async

    今天要介绍的让脚本延迟加载,让脚本延迟加载的方式有多种,最简单粗暴的方法就是将 <script> 标签放在 <body> 标签的最下面,这样就可以按照先后顺序依次执行了,但是你 ...

  2. MGR架构~ 整体性能架构的调优

    一 简介:MGR集群架构的调优二 过程:本文将从各个角度来具体阐述下三 硬件    1 硬件选择相同配置的服务器,磁盘,内存,cpu性能越高越好四 网络    1 0丢包和最好万兆网卡五 MGR本身  ...

  3. Django学习手册 - 初识django

    初识: django简介: 开放源代码的web应用框架 由python语言编写的. 一.框架基本概念(核心): 以上这个图就是 django 的核心逻辑图,必须熟记.后续的所有编程都跟这个图的逻辑息息 ...

  4. 线程池-Executors

    合理使用线程池能够带来三个好处 减少创建和销毁线程上所花的时间以及系统资源的开销 提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行 提高线程的客观理性.线程是稀缺资源,如果无限制的创 ...

  5. TPU使用说明

    1 TPU分类和收费标准 1.1 分类和计费说明 地区 抢占式TPU Cloud TPU 美国 $1.35/hour $4.5/hour 欧洲 $1.485/hour $4.95/hour 亚太区地区 ...

  6. Springboot 配置 ssl 实现HTTPS 请求 & Tomcat配置SSL支持https请求

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TLS与 ...

  7. 论文笔记:Rich feature hierarchies for accurate object detection and semantic segmentation

    在上计算机视觉这门课的时候,老师曾经留过一个作业:识别一张 A4 纸上的手写数字.按照传统的做法,这种手写体或者验证码识别的项目,都是按照定位+分割+识别的套路.但凡上网搜一下,就能找到一堆识别的教程 ...

  8. 深入理解JVM - 1 - Java内存区域划分

    作者:梦工厂链接:https://www.jianshu.com/p/7ebbe102c1ae来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. Java与C++之间有一堵 ...

  9. 20165231 2017-2018-2 《Java程序设计》第6周学习总结

    教材学习内容总结 第八章 String类 Java专门提供了用来处理字符序列的String类. String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用S ...

  10. python print输出带颜色 总结

    书写格式:      开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m      注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个:另外由 ...