none
登录后 在浏览器栏输入登陆页地址问题 RRS feed

  • 问题

  • Form身份认证
    用户登陆之后,在浏览器栏输入登陆页地址 不能回到登录页 只能停留在当前页
    用Request.UrlReferrer是获取在浏览地址栏器输入时候的上次记录地址
    请问这个怎么实现?

    I Belong To Jesus...
    2009年4月29日 2:49

答案

  • 如果只在浏览器输入Login.aspx登录页,则不能判断返回到哪个页面的。只能返回web.config里设置的
     <forms  name=".ASPXAUTH" loginUrl="login.aspx"  defaultUrl="default.aspx"

     defaultUrl.aspx就是登录后返回的页面

    【孟子E章】
    2009年4月29日 8:42
    版主

全部回复

  • 您在一个不登陆就不能访问的页面  直接logoff 就可以跳过去了


    工作突然有点忙 嘿嘿
    2009年4月29日 3:01
  • 我的意思不是要跳到登陆页
    是登陆了之后,如果在浏览器栏输入登陆页地址 就不能跳到登陆页 只能停留在当前页
    I Belong To Jesus...
    2009年4月29日 3:05
  • 是的  登陆页的逻辑是  “只要登陆过   就回到上一页的位置(referer)”

    因为登陆页就管登陆的 已经登陆的话没有理由再访问

    但是一旦你在有权限控制的页面logoff了  这个功能就变成 “因为没有登陆 在登陆后回到上一页的位置(referer)””


    工作突然有点忙 嘿嘿
    2009年4月29日 3:29
  • 可能是我表达不明白吧
    我想实现的是 登录了之后 直接在浏览器地址栏输入登录页的地址 还是停留在本页
    比如在  A.APSX页面 浏览器地址栏输入登录页地址
              1.不会跳转到登陆页 (这个很好实现)
              2.同时要跳转回A.ASPX
    因为在A.APSX页面的浏览器地址栏的时候输入 Login.aspx 肯定要跳转到Login.aspx,这个时候可以判断用户时候已经登录
     if (HttpContext.Current.User.Identity.IsAuthenticated)
     {
    
     }
    但是我该怎么获得上次页面的地址 我需要他跳转回上次页面访问的地址
    I Belong To Jesus...
    2009年4月29日 3:46
  • 你这样做有很多其他的方法,比如单击登录的时候传递一个return url参数,如果没有这个参数的话就跳回到默认页面,如果有的话就跳回到相应的页面。

    如果你是在浏览器地址栏输入还要跳转的话,可以试试放到session做临时保存,然后登录后读这个session然后再跳转,然后清空这个session。

    不知道是不是你说的。

    低调,低调
    2009年4月29日 3:56
    版主
  • 我的解决办法就是先logoff阿


    工作突然有点忙 嘿嘿
    2009年4月29日 5:26
  • FormsAuthentication.RedirectFromLoginPage 方法
    FormsAuthentication.GetRedirectUrl 方法

    可以得到原始页面,也可以使用Request.QueryString["ReturnUrl"]得到

    Forms验证自动在登录页面添加原始页面的地址路径的
    【孟子E章】
    2009年4月29日 8:38
    版主
  • 如果只在浏览器输入Login.aspx登录页,则不能判断返回到哪个页面的。只能返回web.config里设置的
    【孟子E章】
    2009年4月29日 8:41
    版主
  • 如果只在浏览器输入Login.aspx登录页,则不能判断返回到哪个页面的。只能返回web.config里设置的
     <forms  name=".ASPXAUTH" loginUrl="login.aspx"  defaultUrl="default.aspx"

     defaultUrl.aspx就是登录后返回的页面

    【孟子E章】
    2009年4月29日 8:42
    版主
  • 在web.config中
    <authentication mode="Forms">
       <forms name="Login" loginUrl="~/Admin/AdminLogin.aspx" timeout="60" />
      </authentication>
    在需要验证的页面的web.config中
        <system.web>
            <authorization>
       <deny users="?"/>
            </authorization>
        </system.web>
    在登录页面中
    if (是否登录==true)
            {
                 Response.Redirect(Request["ReturnUrl"]);
            }
            else
            {
                Response.Redirect("~/Error.aspx");
            }

    2009年4月29日 9:15
  • 我也是考虑的只在浏览器输入Login.aspx就返回web.config里面的设置
    I Belong To Jesus...
    2009年4月30日 1:08