防止用户不登陆直接输入网址访问页面?
解决方案 »
- C# 调用VC的DLL问题
- vs2005帮助问题:安装了vs2005,msdn lib for 2005,帮助不正常,目录窗口无项目,点筛选依据中的项目,即出错退出,求解决方法。
- Winform下子窗体移动,父窗体刷新的问题?
- 再问webchart X轴 显示时间问题
- panel的IsMdiContainer问题
- C#多线程,关于BackgroundWorker的问题,求高手解决
- 像QQ里的那种推拉式菜单,C#该如何实现!跪求高手指点!~
- 用C#自带的File Field控件上传文件(gigi.bmp)后,怎么打开文件?
- 命名空间“System.Data”中不存在类型或命名空间名称“SQL”(是缺少程序集引用吗?)
- wpf中binding的源为什么是一个属性,而不能是一个共有字段?
- 怎么获得程序当前放置的路径?
- 事件的问题
务端程序中加入下面一段代码:
:
:
httpsession session = request.getsession(true);
if(session.isnew())
{
response.sendredirect(login.htm);
}
else
{
string userid = (string)session.getattribute(userid);
if(userid == null)
response.sendredirect(login.htm);
else
{
:
:写在什么地方???
原文:
利用session对象防止未授权用户访问系统页面
最近用java做了一个b/s系统,为了防止未登陆用户访问系统,我采用了session对象来实现。如果用户通
过登陆页面登陆系统,在登陆成功后,用session.setattribute(userid,userid);往session对象中写入用户id。我在服
务端程序中加入下面一段代码:
:
:
httpsession session = request.getsession(true);
if(session.isnew())
{
response.sendredirect(login.htm);
}
else
{
string userid = (string)session.getattribute(userid);
if(userid == null)
response.sendredirect(login.htm);
else
{
:
:
如果用户没通过登陆页面,session对象肯定是新创建的。
如果用户访问过系统的其他不需登陆就可以访问的页面,这时session对象已经创建,session.isnew()返回
false。那么需要判断userid是否为空『因为如果userid不存在session.getattribute(userid)会返回null』,如
果没有通过登陆页面,userid肯定为空,从而有效防止了未授权用户访问系统页面。
//下面的name应该时工程名称
//loginurl为登陆验证页面
<forms name="Germany" loginUrl="adminstrator/adminlogin.aspx"/>
</authentication> <authorization>
<deny users="*"/>//拒绝所有用户
<!-- 允许所有用户 -->
<!-- <allow users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
<deny users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
-->
</authorization>/////////////////////////////////////////
//登陆页面代码如下Session["uid"] = myset.Tables[0].Rows[0]["username"].ToString();
//主要时下面这一句,这样就OK了
FormsAuthentication.SetAuthCookie(Session["uid"], false);
{
//----Login画面に遷移する
Response.Redirect("index.aspx?MSG=ログインしてください");
return;
}然后在index里,取用户资料,并存在SESSION里
2,母版后台,用户后台程序,Session来判断是否存在