如何利用session防止未登录就进入页面的情况?

比如我有两个页面,一个登陆页面,一个登陆后的主页,我是这样做的:
在登陆页面判断能够成功登录后给session【ID】赋值为登陆用户名,后连接到登陆后的主页。

我现在的问题是:如果在未登录的情况下直接在地址栏输入主页的地址,就可以打开主页了,怎样防止这样的情况发生?
我是这样做的:
if(session[ID].tostring()==NULL)
{说明未登录就打开首页,跳转到登陆页面}
可这行代码会出现错误:未将对象引用设置到对象的实例
我想问题是没登陆没创建session,这样问题该如何解决啊??
对于楼下的解答,我想说我的问题是如何防止“未登录就直接进入首页”这个问题。。。。

实现思路:先设置下session超时时间,之后直接在jsp页面中查看此session,如果没有的话,直接返回登录界面

    在web.xml中的session-config配置
    session-timeout元素(WEB.XML文件中的元素)用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果 session-timeout元素的值为零或负数,则表示会话将永远不会超时。如:
    <session-config><session-timeout>30</session-timeout></session-config> //30分钟

    在jsp页面中:

    <%
    if session.Contents("username")=false then
    response.Redirect("/index.jsp")
    end if

    %>

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-14
那要看你的第一次session定义在哪里 如果定义在登陆页面的话,你在登录后的页面再怎么写获得seesion值的表达式也没用,因为你不登陆他返回的值永远是空.
session.setAttribute("变量","变量值")//初始化,也就是你第一次给值
Object objnum=session.getAttribute("变量");
String stnumm=objnum.toString();//取得session的值
if(!stnumm.equals("")||stnumm!=null)//判断是否是正确的用户名而不是空本回答被提问者采纳
第2个回答  2009-05-24
首先定义一个静态方法,WebHelper.cs
public static string GetLoginUser()
{
string str_userid = HttpContext.Current.Session["id"] == null ? "" : HttpContext.Current.Session["id"].ToString();

return str_userid;
}
然后在主页上调用
if (WebHelper.GetLoginUser() == "") //如果未登录则跳转登陆界面
{
Response.Redirect("登录.aspx");
}
第3个回答  2017-03-27
首先sharePreferences是以键值对的方式保存数据,取的时候只要取到key就可以了。自动登陆的选择框一般是checkbox。当然如果要验证是否登陆成功,是需要跟服务器进行数据交互的。以上是保存数据的方法。下面是界面切换的问题:登陆界面和主页是两个不同的界面,这个需要intent进行跳转到不同的activity界面上。这个地方要加判断,判断用户是否登录。判断的方法就是从sharePreferences取出key后,如果sharePreferences每数据就进入到登录界面,如果sharePreferences有数据就进入到主页。
第4个回答  2009-05-24
if(session[ID].tostring()==NULL) 去掉].tostring(),就可以了。
因为对象为null,即没有对象,所以没有方法。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网