jquery.cookies怎么实现记住我
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery.cookies怎么实现记住我相关的知识,希望对你有一定的参考价值。
jquery.cookies 是一个插件,首先调用插件<script src="js/jquery.cookies.js"></script>
然后再JS中调用函数
<script>
$(function()
//写入cookie
$.cookie("cookie名称", "写入的内容", expires: 7, path: '/',domain:'.baidu.com' );
);
//获取cookie
var UserCookie=$.cookie("cookie名称"");
</script>
中括号里
expires :保存cookie时间(这里是过期时间)
path : 路径(通常就是一个“/”就行了)
domain : 域 参考技术A 【1】先下载jquery.cookie插件:https://github.com/carhartl/jquery-cookie
【2】安装插件:
[html] view plain copy
<script type="text/javascript" src="<%=basePath%>ie6/crm2/js/lib/cookies/jquery.cookie.js"></script>
【3】功能逻辑:
[javascript] view plain copy
//判断之前是否有设置cookie,如果有,则设置【记住我】选择框
if($.cookie('absms_crm2_userName')!=undefined)
$("#rememberMe").attr("checked", true);
else
$("#rememberMe").attr("checked", false);
//读取cookie
if($('#rememberMe:checked').length>0)
$('#userName').val($.cookie('absms_crm2_userName'));
$('#password').val($.cookie('absms_crm2_password'));
//监听【记住我】事件
$("#rememberMe").click(function()
if($('#rememberMe:checked').length>0)//设置cookie
$.cookie('absms_crm2_userName', $('#userName').val());
$.cookie('absms_crm2_password', $('#password').val());
else//清除cookie
$.removeCookie('absms_crm2_userName');
$.removeCookie('absms_crm2_password');
);
【4】使用
[html] view plain copy
<tr>
<td width="60">账 号:</td>
<td width="244"><input id="userName" name="userName" type="text" class="inp_01" /></td>
</tr>
<tr>
<td>密 码:</td>
<td><input id="password" name="password" type="password" class="inp_01" /></td>
</tr>
<tr>
<td> </td>
<td><input id="rememberMe" type="checkbox"/> 记住我</td>
</tr>
项目一众筹网07_04_SpringSecurity记住我数据库登录-默认实现创建UserDetailsService类装配UserDetailsService怎么改源码
系列文章目录
文章目录
- 系列文章目录
- 17-实验7-记住我-内存版
- 18-实验8-记住我-数据库版
- 改源码
- 19-实验9-数据库登录-默认实现介绍
- 20-实验9-数据库登录-创建UserDetailsService类
- 21-实验9-数据库登录-装配UserDetailsService
- 众筹网 项目里面应用 SpringSecurity——下一篇
17-实验7-记住我-内存版
第一次登录以后,然后把浏览器关掉,重新打开,这个时候还是访问上一个请求
本来是要重新登录的,但是如果有记住我这个功能,就不需要重新登录了
我们先试试,没做这个功能之前
把浏览器关闭
然后再访问这个地址(http://localhost:8080/pro5-spring-security/main.html),就会发现会直接跳转到登录页面去
下面开始,我们怎么让它记住我呢?
先开启这个功能
用户要自定义选择:勾选了就记住,没勾选就不记住
我们怎么知道用户选了还是没选?
只要name属性是remember-me框架内部就会帮我们处理 实现
测试看看,应该就没有问题了
注意,不能换浏览器,如果换了浏览器会失效
这个原理是根据cookie来设置的
18-实验8-记住我-数据库版
为什么要有这个版本,原因是,上面那个版本是内存版本,
有一个bug,服务器重启的话就会失效(因为缺少了比对信息)
只有存入到数据库里面,才不会受服务器重启的影响
要存到数据库里, 肯定要连数据库
所以我们第一步,要加入连数据库的依赖
把相关的依赖加进来
<!-- mysql驱动 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.20.RELEASE</version>
</dependency>
【看源码】把数据库配置这块配一下
<!-- 配置数据源 -->
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource">
<property name="username" value="root"></property>
<property name="password" value="root"></property>
<property name="url"
value="jdbc:mysql://localhost:3306/security?useSSL=false"></property>
<property name="driverClassName"
value="com.mysql.jdbc.Driver"></property>
</bean>
<!-- jdbcTemplate -->
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
注意:如果在spring-mvc.xml里面 配置数据源的时候报错,很有可能是pom.xml 依赖没做好,重新整一下依赖
需要建一下 数据库(暂时不建)
装配数据源
注意命名空间,从源码里面复制粘贴一下
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl;
受保护的
我们没办法跟它同一个类,也没办法跟它同一个包,只能是继承这个类
新建一个类去继承它,意思就是“你必须要当它儿子” 你才能用,这就很过分了
这个是源码,我们试试能不能改源码,这样就不用创建数据库了
改源码
建一个,同样的包名,同样的类名
根据源码,在我们的代码下,新建一个包
包下新建一个跟源码一样的类
然后把源码的代码全部拷贝过来
这样就会优先选择我们自己写的代码,而不会去找框架的源码
因为我们这个离得近,类加载器就会优先加载我们的这个类
然后运行程序,这个表就自动建出来了
然后就是持久化的不受服务启动的记住我功能了
慎重改源码,能不改源码,尽量不改,原因是改了之后,就不是框架本身的了,
到时候百度都百度不出来,跟网上都不一样
19-实验9-数据库登录-默认实现介绍
不好用,暂不使用这里略过
所以我们使用下面的方式来做
20-实验9-数据库登录-创建UserDetailsService类
我们知道有一个自定义类是这样的
我们写一个类去实现这个接口
里面只有这么一个方法
实现一下这个接口
创建实体类
其中需要注意的是:get、set方法和无参构造是必须提供的
还需要有个泛型,其实也可以不写
不写,就这样写
因为返回的是List,所以我们可以这样写
因为这个类我们必须要求他在IOC容器里面才可以,所以我们必须要再加一个注解,如下
21-实验9-数据库登录-装配UserDetailsService
其实就是用上上面那个方法
正是因为前面加了注解这里才可以装配进来
测试一下登录看看
假如说是用户不存在则是如下效果:
众筹网 项目里面应用 SpringSecurity——下一篇
以上是关于jquery.cookies怎么实现记住我的主要内容,如果未能解决你的问题,请参考以下文章
项目一众筹网07_04_SpringSecurity记住我数据库登录-默认实现创建UserDetailsService类装配UserDetailsService怎么改源码