怎么判断前端用户登录状态判断是登陆状态还是离开了

君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
用户没有点击退出登录而直接关闭浏览器如何知道
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
在网上看了些资料,说下我的理解:先是服务端去配置sessionId之后服务端将sessionId发给浏览器之后浏览器每次发送HTTP请求的时候都会将cookie发送给服务器,而cookie中存储着sessionId最后服务端搜索这个sessionId,如果找到了则说明用户处于登陆状态。其实我也不太清楚究竟怎么判断用户是否处于登陆状态的,在node.js实战上面有登陆实战部分,感觉和会话相关的代码也就req.session.uid = user_idsessionId是怎么发给浏览器的,或者是如何保存在cookie中的?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
用户登录后端返回token,前端设置cookie存储,再之后在每个需要登录的请求头设置header把token带上,当后端发现token过期就返回用户登录过期需重新登录
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
是钥匙,session 是锁,钥匙放在浏览器,拿玥匙开锁,设置cookie 是在response header里面设置的
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:利用Cookie保存用户登录信息,利用Filter来判断用户是否登录 - CSDN博客
利用Cookie保存用户登录信息,利用Filter来判断用户是否登录
环境:MyEclipse6.5 + Tomcat 6.x + Oracle 10g
问题:因为相关的JSP页面可以通过URL进行访问,即使没有登录,那么如何判断用户是否登录,从而阻止通过URL的非正常访问呢?用户登录的信息如何保存呢?
初步解决方法:利用Cookie保存用户登录信息,利用Filter来判断用户是否登录
-----------------------------------------------------------------------------------------------------------------------
首先,利用Cookie保存用户登录信息:
用户通过login.jsp进行登录,在处理登录信息的Servlet中添加生成Cookie的语句,对用户登录进行标记。
//生成name为username的Cookie,其Value为user
Cookie userCookie = new Cookie( &username&, &user& );
//将该Cookie的有效时间设为20秒
userCookie.setMaxAge( 20 );
//这个Cookie对站点中所有目录下的访问路径都有效
userCookie.setPath( &/& );
//添加Cookie对象
response.addCookie( userCookie );
上面的几行语句,生成了名称为username的Cookie,它的值是user。这样如果用户登录成功,那么就会建立上面的Cookie,这里username是这个Cookie的名称,跟登录用户名无关,并且这个Cookie跟具体的登录信息无关,只是表示如果登录成功,那么我就建立一个名称为username的Cookie。相当于是保存了一个登录成功的标记,供后面判断是否有用户登录使用。将Cookie的有效期设定为20秒,登录超过20秒,Cookie失效,不能够继续操作,除非重新登录。
其次,为了避免通过URL绕开登录的非法访问,可以利用Filter,对所有通过URL的访问进行合法性判断。具体的代码如下:
import java.io.IOE
import javax.servlet.F
import javax.servlet.FilterC
import javax.servlet.FilterC
import javax.servlet.RequestD
import javax.servlet.ServletC
import javax.servlet.ServletE
import javax.servlet.ServletR
import javax.servlet.ServletR
import javax.servlet.http.C
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
public class LoginFilter implements Filter&
protected FilterConfig filterC
public void init( FilterConfig arg0 )throws ServletException
&& this.filterConfig = arg0;
public void destroy()&
&& this.filterConfig =&
public void doFilter(ServletRequest request, ServletResponse response,
&&& FilterChain chain) throws IOException, ServletException&
&& HttpServletRequest sr = ( HttpServletRequest )
&& HttpSession session = sr.getSession();
&& String user = ( String )session.getAttribute( &username& );
&& Cookie userCookie = getCookieValue( sr.getCookies(), &username& );
&& //SessionListener sl = new SessionListener();
&&//判断用户是否登录
&& if( null == userCookie )
&&&//判断当前页面是否为login.jsp
&&& String url = sr.getRequestURL().toString();
&&& if( -1 == url.indexOf( &login& ) )
&&&& ServletContext sc = filterConfig.getServletContext();
&&&& RequestDispatcher rd = sc.getRequestDispatcher( &/login.jsp& );
&&&&& rd.forward( request, response );
&&&& catch( ServletException se )
&&&&& filterConfig.getServletContext().log( se.getMessage() );
&&&& catch( IOException e )
&&&&& filterConfig.getServletContext().log( e.getMessage() );
&& chain.doFilter( request, response );
protected Cookie getCookieValue( Cookie[] cookies, String name )
&&//判断是否存在Cookie
&& if( null != cookies )
&&& for( Cookie c : cookies )
&&&& if( c.getName().equals( name ) )
在上面的Filter中,通过判断当前Cookie中是否有名为username的Cookie来判断用户是否已经登录,如果不存在名为username的Cookie,那么判断当前页面是否为login.jsp,也就是我的登录页面,如果不是话就需要重新定位到login.jsp,迫使用户进行登录。
通过上面的程序建立Filter之后,还需要在对应的web.xml文件中配置Filter,具体如下:
&filter-name&LoginFilter&/filter-name&
&filter-class&com.pan.hrsystem.normal.LoginFilter&/filter-class&
&filter-mapping&
&filter-name&LoginFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
这段配置表示对于所有的URL访问都进行过滤,这样用户企图通过URL绕开login的时候,都会被定位到login.jsp。
上面的解决方案比较粗糙,或许还存在很多值得商榷的地方。当然,除了使用Cookie,也可以使用session或者全局bean来保存用户的信息,在网上也有很多这方面的讨论。也可以将JSP页面转移到WEB-INF目录下,来阻止通过URL的直接访问,如果这样,还需要进行一些其他相关的操作。
上面的内容主要参考了:
以及李宁《Java Web开发技术大全》。
每天动动手,做一点儿开发的工作,Life isbeautiful!
本文已收录于以下专栏:
相关文章推荐
当用户访问网站页面时,系统会检测用户是否是合法登录用户,没登录的用户会被转跳到登录页面或者返回登录提示信息,反之用户可以正常访问
具体思路如下:
    利用filter 过滤所有用户的请求,用户的请...
function SetCookie(name,value)
var Days = 1; //此 cookie 将被保存 1 天
= new Date...
首次登录时,先验证用户是否存在,如果存在,则写入cookie,并且设置过期期限。然后跳到欢迎界面,判断用户类型,显示欢迎界面。退出时清除cookie。
登录界面:
php使用cookie实现记住登录状态,本文用最原始的方法讲解如何实现记住登录状态,给出3个步骤和具体实现代码,需要的朋友可以参考下。
要实现记住密码自动登录的功能,我们大多数据都是利用了客户端的c...
不管是游戏,还是网站,最基本的功能,就是用户注册登录。 
或许,我们做过多次用户的登陆注册的功能,但我们是否想过,为什么要实现用户的登录。用户怎样做才算登录成功。
对用户而言,登录后,就有了他的一...
转自:http://blog.csdn.net/linshutao/article/details/6774411
项目需要从配置文件中读取更新索引的的地址,故写了一个方法进行操作:读取并解析...
webstorm应该是目前最强的js编辑器了,结合sublime
text可以很效率的开发项目。
今天整理了一些webstorm比较实用的快捷键:
Ctrl+/ 或 Ctrl+Shift+/...
储存在用户本地终端上的数据
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109(已废...
第一部分是destoon 的登录过程
他的最新文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)5703人阅读
事件起因:
&&&&&&&&&&&& 小x向我反应用户在我开发的系统中,在其中一个功能上待了很长时间,当用户跳转到其他界面上时,突然就掉线了。
&&&&&&&&&&&& 他告诉我应当在用户每次向后台索取数据的时候进行用户登录状态的检验。
&&&&&&&&&&&& 用户的登录状态其实是个比较繁琐的过程。按照业务的要求,当用户点击登录界面的保存密码按钮时,在本地的cookie进行长达七天的保存。当用户没有点击保存密码的时候,主要依靠session来进行保存。
session与cookie:
&&&&&&&&&&&& 这两者之间的关系,网上有太多内容介绍了。简单来说:session放在服务器端。当浏览器关闭就会清空。session时间不宜设置过长,否则大量占用服务器内存。cookie适合长时间保存,在登出时被清除。
验证用户是否登录的逻辑:
&&&&&&&&&&& 1)用户密码登录时,在后台的req中记住session.
&&&&&&&&&&& 2)如果用户保存登录密码,则记住cookie,否则把当前用户的cookie设置为空;
&&&&&&&&&&& 3)每次用户需要向后台进行请求时,进行状态检验:
&&&&&&&&&&&&&& session是否存在?若存在,则继续进行请求操作,并将session的有效时间重新设置一次;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 若不存在,则判断cookie是否存在?若存在,使用该cookie完成自动登录,即完成了一次1);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 若不存在,则页面重定向到登录页面。
解决方案:
&&&&&&& 上面的验证逻辑有了。那么在什么地方进行验证呢?总不能在每次进行请求的地方都进行一遍这样的验证吧?无论是放在前端的调用,中间的路由,或者后台的操作上,显然都显得太过冗沉。
&&&&&& 经过一番资料查询,我找到了方法:
&&&&&& 对所有的后端请求进行拦截。
var app = express();app.use(function (req, res, next) {
if (req.session.login_account) {
// 判断用户session是否存在
var arr = req.url.split('/');
for (var i = 0, length = arr. i & i++) {
arr[i] = arr[i].split('?')[0];
// 判断请求路径是否为根、登录、注册、登出,如果是不做拦截
if (arr.length & 2 && arr[0] == ''&&arr[1] == 'operlogin' && arr[2] == 'checklogin' || arr[2] == 'login') {
// req.session.originalUrl = req.originalUrl ? req.originalUrl :
// 记录用户原始请求路径
res.redirect(&index2.html#/operlogin&);
因为开发的系统使用的是express来提供前后端的链接,因此可以直接在此处对请求进行拦截。
判断用户的session是否存在,如果存在,将session的超时时间重新设置(如果session的有效时间是二十分钟,每一次向后台的操作都将使时这个时间重新设置为二十分钟,直到二十分钟用户都没有操作,则session失效);
这里有个很巧妙的地方, if (req.session.login_account)每次进行判断之后,session会自动重新设置自己的有效时间。所以只需要每次请求进行一次判断就可以了。
如果session失效,或者没有session,则需要根据请求的url判断是否应该对这个请求放行。比如,如果是注册,登录,登出,默认的寻找cookie进行自动登录等请求,则可以直接放行。反之,则表示没有session,没有cookie,需要跳转到登录页面。
(如果session的有效时间是二十分钟,每一次向后台的操作都将使时这个时间重新设置为二十分钟,直到二十分钟用户都没有操作,则session失效);
既然可以在每次请求的时候进行用户登录状态的验证,也就可以在每次用户向后台请求的时候,进行权限的验证。
如果权限比较复杂,还可以自行设置黑白名单。
&&&&&&&&&&&&&&&&&&&&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:48042次
积分:1047
积分:1047
排名:千里之外
原创:50篇
转载:41篇
(8)(4)(1)(4)(3)(9)(14)(7)(6)(2)(16)(19)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 判断用户离开页面 的文章

 

随机推荐