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-记住我-内存版

第一次登录以后,然后把浏览器关掉,重新打开,这个时候还是访问上一个请求
本来是要重新登录的,但是如果有记住我这个功能,就不需要重新登录了
我们先试试,没做这个功能之前

把浏览器关闭
然后再访问这个地址(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怎么改源码

记住密码功能是怎么实现的

网页怎么自动记住密码?

实现“记住我”Django

如何实现记住我的功能?

场景应用:SpringSecurity记住我功能实现