怎么实现输入苹果锁屏密码输入错误错误后,自动打开另个操作

三星手机刚设置左锁屏密码,点知锁屏后竟然输入密码错误,如何是好啊,求救求救
全部答案(共6个回答)
刷机精灵解锁屏幕吧,然后重置一次
可以试下 进入RECOVERY,进入WIPE选项,选择恢复出厂值wipe data/factory res,最后重启手机即可。不过,这种方法会导致手机数据丢失。
根据您的描述,建议您
1. 确定手机是否绑定了三星账户,数据开关开启,可登陆通过手机的远程控制进行屏幕...
设定--我的设备--锁定屏幕---
屏幕锁定--选择密码即可。
设定--安全--用户信息,进入可以设定锁屏显示的文字
手机是否需要ROOT主要看你是不是有没有需求。ROOT后可以删除系统里面带的一些垃圾软件,其实是一些我们不...
你有打嗝像喝了碳酸饮料样的味道,这叫打酸嗝,也称嗳气。
打酸嗝是因胃内排空减慢、消化不良、且有胃酸增多,发生打嗝、嗳气或反酸所致。
引起的原因,如无胃炎...
安全起见,可以进入工程模式恢复。电源键+音量下键,选择工程模式,重启即可。
根据您的描述,建议您
1. 确定手机是否绑定了三星账户,数据开关开启,可登陆通过手机的远程控制进行屏幕...
去强制解锁吧 费用20-30元
一般手机维修的都可以。
用刷机精灵连接,功能面板有密码解锁功能的
可以试下 进入RECOVERY,进入WIPE选项,选择恢复出厂值wipe data/factory res,最后重启手机即可。不过,这种方法会导致手机数据丢失。
到酒店后出示手机给前台看 就可以直接付钱住么?
答: 美国苹果公司的新款手机,全触屏的智能机,在中国卖的很贵。
答: 手机购买还是找正规卖家
天猫等网站
答: 可能被设置了禁言你IP接入吧
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区5805人阅读
java-web(10)
oracle10g(4)
最近在公司实习的项目遇到这么一个业务需求:用户登录时如果5分钟内密码连续3次输入错误就将用户锁定,24小时后自动解锁。
分析一下,这个需求有很多种方法可以实现,比较简单的就是采用数据库来实现,我采用的是比较老实的办法,欢迎大家留言指正。
公司开发采用的是struts1.1+oracle+MVC,由于某些样式不支持的问题,用户登录数据的检验这些操作我都是传输到servlet中进行的。
第一步:建用户登录记录表
直接贴出sql语句:
create table C_LOGIN_RECORD
NUMBER(10) not null, --登录记录ID,不为空
VARCHAR2(40),
VARCHAR2(10),
--锁定标志,'1'代表锁定状态 '0'未锁定状态
failure_num VARCHAR2(10),
--登录失败次数
login_date
--登录时间,默认为当前时间
登录的时候直接往其中插入数据就好,这里c_id字段非空,是自动递增的,由于在oracle中没有自带的acto-increment,所以采用触发器+序列的方式来实现,代码如下:
create sequence LOGIN_AUTOINC_SEQ
minvalue 1
start with 43
increment by 1
create or replace trigger login_autoinc_tg
before insert on C_LOGIN_RECORD
for each row
select login_autoinc_seq.nextval into :new.c_id from
end login_autoinc_
当往其中插入数据的时候,就会触发触发器,获得ID
第二步:完成dao层的方法
UserParaDao.java
* 判断用户名和密码是否匹配
* userPara
* Exception
public boolean checkNameAndPsw(UserPara userPara) throws Exception {
String sql = "SELECT PASSWORD FROM C_USER WHERE NAME=?\n";
ResultSet rs = DaoUtil.executeQuery(DaoTools.getConnName(), sql,
new String[] { userPara.getName() });
if (rs != null) {
while (rs.next()) {
if (userPara.getPassword().equals(rs.getString("PASSWORD"))) {
return true;
return false;
* 判断用户是否存在
* userName
* Exception
public boolean checkUser(String userName) throws Exception {
String sql = "SELECT NAME FROM C_USER WHERE NAME=?\n";
ResultSet rs = DaoUtil.executeQuery(DaoTools.getConnName(), sql,
new String[] { userName });
if (rs != null) {
while (rs.next()) {
return true;
return false;
* 根据用户名判断是否有过登录记录
public boolean checkLoginRecord(String userName) throws Exception {
String sql = "SELECT COUNT(*) num FROM C_LOGIN_RECORD WHERE USERNAME=?\n ";
ResultSet rs = DaoUtil.executeQuery(DaoTools.getConnName(), sql,
new String[] { userName });
if (rs != null) {
while (rs.next()) {
if ("0".equals(rs.getString("num"))) {
return false;
return true;
* 删除用户的登录记录
* userName
* Exception
public void deleteLoginRecord(String userName) throws Exception {
String sql = "DELETE FROM C_LOGIN_RECORD WHERE USERNAME=? \n";
DaoUtil.executeUpdate(DaoTools.getConnName(), sql,
new String[] { userName });
* 获取用户最近的一条登录记录
* userName
* Exception
public ResultSet getLatestLoginRecord(String userName) throws Exception {
String sql = "SELECT USERNAME, LOCK_FLAG, FAILURE_NUM, LOGIN_DATE "
+ " FROM C_LOGIN_RECORD WHERE
LOGIN_DATE=(SELECT MAX(LOGIN_DATE)"
+ "FROM C_LOGIN_RECORD WHERE USERNAME=? GROUP BY USERNAME)";
return DaoUtil.executeQuery(DaoTools.getConnName(), sql,
new String[] { userName });
* 获取用户登录失败次数为2的登录登录时间
* userName
* Exception
public String getFaNum2Record(String userName) throws Exception {
String sql = "SELECT USERNAME,LOGIN_DATE FROM C_LOGIN_RECORD "
WHERE USERNAME=? AND FAILURE_NUM=2";
ResultSet rs = DaoUtil.executeQuery(DaoTools.getConnName(), sql,
new String[] { userName });
if (rs != null) {
while (rs.next()) {
return rs.getString("LOGIN_DATE").replace("T", " ");
return "";
* 插入登录记录
* userName
* lockFlag
* failureNum
public void insertLoginRecord(String userName, String lockFlag,
String failureNum) {
List&String& list=new ArrayList&String&();
String sql="INSERT INTO C_LOGIN_RECORD(USERNAME,LOCK_FLAG,FAILURE_NUM," +
"LOGIN_DATE) values(? ,? ,? , sysdate)";
list.add(userName);
list.add(lockFlag);
list.add(failureNum);
DaoUtil.executeUpdate(DaoTools.getConnName(), sql, list.toArray());
第三步,servlet中进行校验
LoginServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName = request.getParameter("username");
String passWord = request.getParameter("password");
UserPara userPara = new UserPara(userName, passWord);
UserParaService service = new UserParaService();
if (service.checkUser(userName)) {
if (service.checkLoginRecord(userName)) {
ResultSet rs = service.getLatestLoginRecord(userName);
String lockFlag = "";
String failureNum = "";
String loginDate = "";
if (rs != null && rs.next()) {
lockFlag = rs.getString("LOCK_FLAG");
failureNum = rs.getString("FAILURE_NUM");
loginDate = rs.getString("LOGIN_DATE").replace("T", " ");
if ("1".equals(lockFlag)) {
if (service.localdateLtDate2(loginDate)) {
service.deleteLoginRecord(userName);
if(service.checkNameAndPsw(userPara)){
service.insertLoginRecord(userName, "0", "0");
request.getSession().setAttribute("LoginFlag", "1");
response.sendRedirect("http://localhost:8080/web/prepay/pur/emp/ePricePara.do?action=init");
service.insertLoginRecord(userName, "0", "1");
response.sendRedirect("http://localhost:8080/web/prepay/pur/login/login.jsp?error=2");
response.sendRedirect("http://localhost:8080/web/prepay/pur/login/login.jsp?error=3");
if(service.checkNameAndPsw(userPara)){
service.deleteLoginRecord(userName);
service.insertLoginRecord(userName, "0", "0");
request.getSession().setAttribute("LoginFlag", "1");
response.sendRedirect("http://localhost:8080/web/prepay/pur/emp/ePricePara.do?action=init");
if(service.localdateLtDate(loginDate)){
service.deleteLoginRecord(userName);
service.insertLoginRecord(userName, "0", "1");
response.sendRedirect("http://localhost:8080/web/prepay/pur/login/login.jsp?error=2");
if("2".equals(failureNum)){
String date1=service.getFaNum2Record(userName);
if(service.localdateLtDate(date1)){
service.deleteLoginRecord(userName);
service.insertLoginRecord(userName, "0", "1");
response.sendRedirect("http://localhost:8080/web/prepay/pur/login/login.jsp?error=2");
service.insertLoginRecord(userName, "1", "3");
response.sendRedirect("http://localhost:8080/web/prepay/pur/login/login.jsp?error=4");
service.insertLoginRecord(userName, "0", String.valueOf((Integer.parseInt(failureNum)+1)));
response.sendRedirect("http://localhost:8080/web/prepay/pur/login/login.jsp?error=2");
if(service.checkNameAndPsw(userPara)){
service.insertLoginRecord(userName, "0", "0");
request.getSession().setAttribute("LoginFlag", "1");
response.sendRedirect("http://localhost:8080/web/prepay/pur/emp/ePricePara.do?action=init");
service.insertLoginRecord(userName, "0", "1");
response.sendRedirect("http://localhost:8080/web/prepay/pur/login/login.jsp?error=2");
response.sendRedirect("http://localhost:8080/web/prepay/pur/login/login.jsp?error=1");
} catch (Exception e) {
e.printStackTrace();
service层的部分代码:
UserParaService.java
*判断当前时间与给定时间差是否大于5分钟
* 大于5分钟返回true
* Exception
public boolean localdateLtDate(String date) throws Exception{
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Date date1=sdf.parse(date);
Date now=sdf.parse(sdf.format(new Date()));
if(now.getTime()-date1.getTime()&5*60*1000){
return true;
return false;
*判断当前时间与给定时间差是否大于一天
* 大于一天返回true
* Exception
public boolean localdateLtDate2(String date) throws Exception{
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Date date1=sdf.parse(date);
Date now=sdf.parse(sdf.format(new Date()));
if(now.getTime()-date1.getTime()&24*60*60*1000){
return true;
return false;
登录jsp的js处理:
document.body.onload=function(){
var errori='&%=request.getParameter("error")%&';
if(errori=='1'){
alert("用户不存在!");
}else if(errori=='2'){
alert('用户名密码不匹配!');
}else if(errori=='3'){
alert("用户处于锁定状态!");}
else if(errori=='4'){
alert('密码连续3次输入错误,用户将被锁定24小时!');
if(document.myform.username.value==''&&document.myform.password.value==''){
document.myform.username.focus();
function EnterPress(e){
var e = e || window.
if(e.keyCode == 13){
checkuser();
function checkuser(){
var forma=document.forms[0];
if(forma.username.value.length&1&&forma.password.value.length&1){
return true;
alert('用户名或密码不能为空');
return false;
基本的逻辑就是这样,流程图当时随手画的,被扔掉了,有不对的地方欢迎大家指正。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:40498次
排名:千里之外
原创:27篇
(1)(4)(2)(2)(5)(7)(8)(2)设置Linux用户连续N次输入错误密码进行登陆时,自动锁定
【转】设置Linux用户连续N次输入错误密码进行登陆时,自动锁定
设置Linux用户连续N次输入错误密码进行登陆时,自动锁定X分钟(pam_tally2)
测试系统 :Asianux 3.0 sp2 x86
kernel : 2.6.18-128.7
pam版本:pam-0.99.6.2-4.1AXS3
操作方法:
一、在字符终端下,实现某一用户连续错误登陆N次后,就锁定该用户X分钟。
执行 vi /etc/pam.d/login
在#%PAM-1.0 下新起一行,加入
auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root
root_unlock_time=10
如果不限制root用户,则可以写成
auth required pam_tally2.so deny=3 unlock_time=5
其中大概含义如下:
even_deny_root&&&
也限制root用户;
deny&&&&&&&&&&
设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
unlock_time&&&&&&&
设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time&&&&&
设定root用户锁定后,多少时间后解锁,单位是秒;
此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally
模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。
二、在图形登陆界面下,实现某一用户连续错误登陆N次后,就锁定该用户X分钟。
执行 vi /etc/pam.d/kde
在#%PAM-1.0 下新起一行,加入
auth required pam_tally2.so even_deny_root deny=3 unlock_time=5
root_unlock_time=10
如果不限制root用户,则可以写成
auth required pam_tally2.so deny=3 unlock_time=5
三、也可以直接在 system-auth 文件中直接添加这些命令,修改完成后,凡是调用 system-auth
文件的服务,都会生效。因为有自动解锁时间,所以,不用担心全部限制后,会出现永远无法登陆的“尴尬”情况。
可以使用 pam_tally2 -r -u username 命令,手动清除某用户记录次数。
设置Linux用户连续N次登陆失败时,自动锁定X分钟(pam_tally)
之前有写过一篇关于限制用户错误登陆次数的文章,最近工作中又遇到了类似的问题,回过头来看看,只有 pam_tally2
的方法,没有前身 pam_tally 的方法,今儿看到同事的方法,特拿来留着,以备后用。
1、如果想在所有登陆方式上,限制所有用户,可以在 /etc/pam.d/system-auth 中增加2行
auth& required&
pam_tally.so& onerr=fail&
no_magic_root
account& required&
pam_tally.so&&
deny=3& no_magic_root&
even_deny_root_account& per_user&
设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
no_magic_root& 连root用户也在限制范围,不给root特殊权限。
详细参数的含义,参见 /usr/share/doc/pam-xxxx/txts/README.pam_tally
如果不想限制root用户,可以将 even_deny_root_account 取消掉。
2、针对不同服务来限制不同登陆方式:
只在本地文本终端上做限制,可以编辑如下文件,添加的内容和上方一样。
vi /etc/pam.d/login
只在图形化登陆界面上做限制,可以编辑如下文件,添加的内容和上方也一样。
vi /etc/pam.d/kde
只在远程telnet、ssh登陆上做限制,可以编辑如下文件,添加的内容和上方也一样。
vi /etc/pam.d/remote
vi /etc/pam.d/sshd
3、手动解除锁定:
查看某一用户错误登陆次数:
pam_tally &user
例如,查看work用户的错误登陆次数:
pam_tally &user work
清空某一用户错误登陆次数:
pam_tally &user &reset
例如,清空 work 用户的错误登陆次数,
pam_tally &user work &reset
faillog -r 命令亦可。
4、pam_tally没有自动解锁功能
因为pam_tally没有自动解锁的功能,所以,在设置限制时,要多加注意,万一全做了限制,而
root用户又被锁定了,就只能够进单用户模式解锁了,当然,也可以添加crontab任务,达到定时自动解锁的功能,但需要注意的是,如果在/etc
/pam.d/system-auth
文件中添加了pam_tally的话,当root被锁定后,crontab任务会失效,所以,最好不要在system-auth
文件中添加pam_tally。
5、添加crontab任务
root用户执行 crontab -e 命令,添加如下内容
*/1 *& *& *&
/usr/bin/faillog& -r
意思是,每1分钟,将所有用户登陆失败的次数清空,并将所有用户解锁。
&我自己的系统是centos,我在&/etc/pam.d/system-auth文件中的第一行加入
auth required pam_tally2.so deny=3 unlock_time=1800
even_deny_root root_unlock_time=3600
经过测试可以生效。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 iphone锁屏密码错误 的文章

 

随机推荐