问题描述
我想弄一个保密的页面,意思就是登录后才能看.我知道用Session来实现.可是判断是否已经登录之后,我就遇到问题了:我只会在Page_Load方法里面让那些没登录的访客用Response.Redirect方法传到另一个地方去.我又觉得把所有东西放到panel里面不大好.有没有简单的方法让那些没登录的访客只用Response.Write方法只给他们显示几个字呢?
解决方案
解决方案二:
LZ可以把一个页面的主体内容全部写到一个stringBuilder当中,再在pageload当中进行判断如果用户已经登录就显示那个stringBuilder中的内容,也就是页面内容,如果没有登录把把stringBuilder中的内容修改为几个简单的字符protectedvoidPage_Load(objectsender,EventArgse){stringBuildercontent="页面主体内容";if(!登录){content="没有登录访问的内容";Response.Write(content.ToString());}else{Response.Write(content.ToString());}}
解决方案三:
一样的思路....都是要先判断是否登陆转到登陆页.......这样不是更好?你提示它信息""未登陆什么的"客户还要去找从那里登陆不是更郁闷????
解决方案四:
可以用From认证啊~~~~~很简单的
解决方案五:
如果用户没登录就Response.Write一下;如果登录就执行你该做的。不太理解,就当没说,顶你一下了。
解决方案六:
if(Session["UserNOLogin"]==""){Response.Redirect("login.aspx");}没有login就到login页面,有的话就到你要看到的页面不就搞定吗,有什么问题吗?:
解决方案七:
symbol441的方法还是不行.用VS.net的设计器设计的网页,不Response.Redirect到别的页面的话,那些内容还是会显示出来的.我又不是把整个页面的内容放到一个String里面去.各位,我就是不大想用Response.Redirect这个方法,就想只显示几个字嘛.比如在Page_Load里面Response.Write("您没有阅读的权限!");然后再停止页面显示.有没有这种方法呢?
解决方案八:
如果你的页面是用一个大table控制的,那就让这个大table的runat=server。然后在page_load判断用户是否登陆,如果没登陆,就Response.Write("您没有阅读的权限!");然后让大table的visible=false;
解决方案九:
把整个页面放到一个String里这种方法我还是第一次听说。不知这样的方法后台代码如何写,反正那是不可能用任何服务端的控件了。也没有任何服务端事件了。我的作法是当用户已登录但没权限时抛出一个异常,然后通过global.asax导到一个错误显示页面。这个错误页面当然可以精心设计,比几个冷冰冰的文字强一点。
解决方案十:
另外,我认为尽量不要诱导用户作出无权限的操作。比如像CSDN这样,明明不能给贴子加分,还放那么大个加分按钮,实在是没带好头。
解决方案十一:
可以在Page_Load的时候进行判断if(!验证){Response.Write("输出文字");Response.End();}
解决方案十二:
楼主你说:比如在Page_Load里面Response.Write("您没有阅读的权限!");然后再停止页面显示.那你想在没有阅读权限时停止页面显示,那这时页面显示什么呀??空白.还是"您没有阅读的权限!"这几个字呢.如果他有这个权限但是他没有登录.现在想登录呢.他上哪里找登录页面呀...这样做是不是有点不方便呀..这样写有什么不好吗??if(Session["UserNOLogin"]==""){Response.Redirect("login.aspx");}
解决方案十三:
1.在要判断的页的load事件中+Sever.Excute("Juge.aspx");如下protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){server.Excute("Juge.aspx");}}2.在Juge.aspx页中写下如下语句:protectedvoidPage_Load(objectsender,EventArgse){if(Session["userID"]=null){Response.Redirect("login.aspx");}else{}}servet.Excute()方法的好处在登陆后能返回到你本来想要登陆的页面
解决方案十四:
if(!CheckLogin){Response.Write("PleaseLogin.");Response.End();}else{Response.Write("content");}
解决方案十五:
楼上的很多正解了,就是验证失败的时候if(验证失败){Response.Write("提示用户登录");Response.End();return;}正常登录情况下不执行以上代码,就会显示登录用户可以查看的内容了
解决方案:
楼主好好读一下"ASP.NET快速入门教程"的“基于窗体的身份验证”这一节吧!很简单的。未经验证的访问将会被定向到:loginUrl也就是下面配置的login.aspx配置一下web.config:<authenticationmode="Forms"><formsname=".ASPXCOOKIEDEMO"loginUrl="login.aspx"defaultUrl="default.aspx"protection="All"timeout="30"path="/"requireSSL="false"slidingExpiration="true"enableCrossAppRedirects="false"cookieless="UseDeviceProfile"domain=""><!--protection="[All|None|Encryption|Validation]"--><!--cookieless="[UseUri|UseCookies|AutoDetect|UseDeviceProfile]"--></forms></authentication><authorization><denyusers="?"/><--禁止匿名访问,也就是必须经过验证--></authorization>再加上简单的验证:voidLogin_Click(Objectsender,EventArgsE){//authenticateuser:thissamplesacceptsonlyoneuserwith//anameofsomeone@www.contoso.comandapasswordof'password'if((UserEmail.Value=="someone@www.contoso.com")&&(UserPass.Value=="password")){FormsAuthentication.RedirectFromLoginPage(UserEmail.Value,PersistCookie.Checked);}else{Msg.Text="InvalidCredentials:Pleasetryagain";}}
解决方案:
如果只是针对其中一个页面,那可在web.config中配置location:<locationpath="~/Users.aspx"><system.web><authorization><allowusers="Administrators"/><allowroles="Administrators"/></authorization></system.web></location>个体配置情况可自己搜索。
解决方案:
也可以增加一个跳转页面,先访问这个文件,如果没有权限直接显示这个空文件,否则跳转。
解决方案:
楼上的方法有问题,这样你的跳转页面逻辑就复杂化了。而且每个需要权限的页都要经过你这个所谓的跳转页去跳。而且,当用户直接用URL访问,绕过你这个跳转页,到头来还是要判断权限,又回到了LZ当初的问题。