jfinal restful

    经常留意jfinal的动态,有关session的问题 @JFinal 都是restful的回复。今天就试着弄了下,不知道哪些设计上有问题,还望大神们指出。

    登录系统,访问action

<form action="/user/loginSuccess" method="post">
	<ul>
		<li>邮箱:</li>
		<li><input type = "text" name = "mail" value = "${mail!}">${mailMsg!}</li>
	</ul>
	<ul>
		<li>密码:</li>
		<li><input type = "password" name = "password" value = "${password!}">${passwordMsg!}</li>
	</ul>
	<input type = "submit" value = "提交">
</form>


    User表数据库字段

id         username      mail        password    cookie_id    cookie_time

101           张三         kxf@        123            101

    访问loginSuccess,


public void loginSuccess() throws UnsupportedEncodingException{

		//给当前访问的这个用户起了个名字:cookieId,用User.ID保证其唯一性
              //cookieId也就是session,以后的访问可以通过获取Cookie中的cookieId来获取当前用户
		setCookie("cookieId", user.getStr(User.ID), 60 * 60 * 24 * 30); //保存cookie一个月

              //在cookie中也可以保存汉字姓名
		setCookie("username", URLEncoder.encode(user.getStr(User.USERNAME), "UTF-8"), 60 * 60 * 24 * 30);
		
              //保存cookie_id 到数据库,并设置当前访问时间	
		user.set(User.COOKIE_ID, user.getStr(User.ID))
			.set(User.COOKIE_TIME, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
			.update();  
        render("loginSuccess.html");
	}
    loginSuccess.html页面

<script type="text/javascript">
	$(function(){
		$("#username").text($.cookie("username"));
	});
</script>
欢迎登录:<a href="/user/personal"><span id = "username"></span></a>
    访问personal    action(时间不早了,这块还没实现,就打字了)

    loginSuccess.html会传递cookie过去,相当于session会话访问,从cookie中获取cookie_id得到数据101,查看数据库字段cookie_id中是否有101,如果有,且cookie_time时间没有超过半小时,匹配成功,这个用户当前有效。

    做到这儿判断这个cookie_time 太麻烦了,可以弄个全局拦截器,每次访问,先看看是否过期,如果没有过期,更新当前时间,并跳转到action中;如果过期,跳转到登录页面

你可能感兴趣的:(session,Restful,jFinal)