现在我有一个需求,在mainpage.html中判断用户是否已经登录。现在我的做法是,加载页面的时候,在document.ready()方法内用ajax去请求服务器是否存在session,没有的话,就widows.location("login.html")。但是,这样不是十分的合适。因为在document.ready()方法前页面已经加载了,所以会显示mainpage.html的内容。所以整体的效果是用户先看到mainpage.html,然后才跳转到login.html的。
有没有一种更加好的方法来避免上述情况的出现呢?
asp.net webform我是不会啦!但asp.net mvc就很简单,一行代码+web.config配置,就自动了。
MVC知识接触过啦
是asp.net就好。
1、启用form认证机制,一切都那么简单。
2、在mainpage.html的访问请求里,判断是否已经登录,然后执行必要的跳转。前提:asp.net,html貌似不是。
我用的是html,没有用aspx,但是后台还是.net
@mcfer: 静态页面,没有被.net处理,是不好弄的。
如果你一定要这样,可以:
1、定义一个空页面(或消息等待页面之类的),然后通过ajax获取登录状态,再切换到mainpage或login
2、将mainpage的内容先隐藏,通过ajax检测登录状态,登录则显示内容,否则跳到login
3、mainpage页面置空,只一段ajax检测登录状态,登录则通过ajax读取mainpage内容,否则跳转到login
在前端用异步方式判断的话肯定会出现你这样的问题。改成同步方式即可
同步?是提交表单吗?
我曾经开发过相关的项目,使用的jsp,ssh。
在jsp中针对你遇到的问题是用Filter的方式来设置页面权限的。
web.xml中对网站的路径进行配置,这样就可以避免你遇到的问题。
谢谢你。用的是asp.net。。。
网页加载是从上往下加载的,把js放到前面,不写在document.ready()里面
但是在什么时候执行呢?
@mcfer: 页面加载前
直接在页面头部加载一个js 资源,来判断是否登录就可以了
<script src="/info.ashx"></script>
在 info.ashx 文件中 判断是否登录,可以直接跳转登录页面;
还可以输出js 插入用户的信息到页面中
谢谢你。还有这种用法啊?我试一下。
那就不要用js去验证就好了呀,js发异步肯定有响应时间的,或者你不要发异步,就查cookie值先。
用asp.mvc自带的