1.FormsAuthentication.GetRedirectUrl()和FormsAuthentication.RedirectFormLoginPage()的跟本区别是什么?请说的通俗一点,msdn上的解释没看懂!
2.我用form验证,根目录下有很多文件和文件夹,其中包括login.aspx和default.aspx两文件和B文件夹。如果用户直接登陆login.aspx通过验证,验证以后进入默认页B文件夹下的A.aspx页。但是如果直接访问B文件夹内的C.aspx,则进入login.aspx通过验证,验证以后就进入C.aspx。这样的效果该如何实现,语句怎么写?
3.if(FormsAuthentication.GetRedirectUrl(userid,flase).Endswith("default.aspx"))
Response.Redirect("fff.aspx");
else
FormsAuthentication.RedirectFormLoginPage(userid,flase)
这个判断做是什么意思?有什么作用?
2.我用form验证,根目录下有很多文件和文件夹,其中包括login.aspx和default.aspx两文件和B文件夹。如果用户直接登陆login.aspx通过验证,验证以后进入默认页B文件夹下的A.aspx页。但是如果直接访问B文件夹内的C.aspx,则进入login.aspx通过验证,验证以后就进入C.aspx。这样的效果该如何实现,语句怎么写?
3.if(FormsAuthentication.GetRedirectUrl(userid,flase).Endswith("default.aspx"))
Response.Redirect("fff.aspx");
else
FormsAuthentication.RedirectFormLoginPage(userid,flase)
这个判断做是什么意思?有什么作用?
解决方案 »
- mvc3 的Rezor视图下怎么实现递归生成树
- radiobuttonlist很奇怪的问题
- 动态分页算法该怎么做?
- aspx生成静态页面
- 在.NET中Application_Start方法里启动tomcat,求教!!!!
- 我写连接ACCESS数据库时提示“server.mappath 中"server"未申明”
- 关于substring
- IIS无法访问本机IP地址
- 高手请进, C#和ASP.NET 项目问题.一点IDEA也没有
- .net,未能加载文件或程序集“Infragistics2”
- 如何获取Datagrid里面子控件Button的Click事件 高手救命
- 我用JMAIL做的一个在线收邮件的程序,要把附件存下来,请问.net里有savetofile的控件吗?
如果重定向 URL 指定其他服务器,则该方法还将身份验证票作为查询字符串的一部分返回。该方法可由需要亲自重定向而不是使用 RedirectFromLoginPage 重定向的应用程序使用。
Response.Redirect("fff.aspx");
elseFormsAuthentication.RedirectFormLoginPage(userid,flase) //将已验证身份的用户重定向回最初请求的 URL。
我问的区别FormsAuthentication.RedirectFormLoginPage()这个我也知道啊!
返回的是最初请求页面的URL
FormsAuthentication.RedirectFormLoginPage()
这个方法是返回到最初请求的页面
Response.Redirect("fff.aspx");
else
FormsAuthentication.RedirectFormLoginPage(userid,flase)
-----------------------------------------------------------------------------
这个判断是说验证后如果请求页是default.aspx,那么通过重定向到fff.aspx页,否则重定向到原请求页
RedirectFormLoginPage方法是把通过验证的用户重定向到他最初请求的页面,比如用户最初请求c.aspx,但由于他没有通过身份验证,于是被自动重定向到了login.aspx进行身份验证,如果他输入的凭据通过了身份验证,就可以用此方法,从而将用户重定向到了c.aspx。GetRedirectUrl方法并不将通过身份验证的用户重定向到用户最初请求的页面,它只是返回最初请求页面的URL,是一个string型数据,比如http://yourapp/b/c.aspx。
所以FormsAuthentication.GetRedirectUrl(userid,flase).Endswith("default.aspx")的意思就是把“http://yourapp/b/c.aspx”与“default.aspx”从末尾进行比较,如果相等,则为true,将执行Response.Redirect("fff.aspx");不等则为false,将执行FormsAuthentication.RedirectFormLoginPage(userid,flase)。对于2的情况,建议你把a.aspx改为default.aspx并放入应用程序的根文件夹中,然后在应用程序根目录下的web.config文件中加入下面的配置:
<authorization>
<deny users="?"/>
</authorization>
这样只需运用
FormsAuthentication.RedirectFormLoginPage(userid,flase)一句就可以实现“如果用户直接登陆login.aspx并通过验证,则进入默认页B文件夹下的A.aspx页”以及“如果直接访问B文件夹内的C.aspx,则进入login.aspx通过验证,验证以后就进入C.aspx”
第二个问题的条件是不能变的,因为我在开发的时候遇到的问题!
Response.Redirect("B/c.aspx"); //用户直接登陆login.aspx并通过验证
else
FormsAuthentication.RedirectFormLoginPage(userid,flase); //直接访问B文件夹内的C.aspx,则进入login.aspx通过验证,如果通过验证以后就进入C.aspx
返回的是最初请求页面的URL
FormsAuthentication.RedirectFormLoginPage()
这个方法是返回到最初请求的页面
楼上回答你应该明白了!
2.if(FormsAuthentication.GetRedirectUrl(userid,flase).Endswith("B/A.aspx").ToString()==false)FormsAuthentication.RedirectFormLoginPage(userid,flase)
else Response.Redirect("../B/A.aspx");3.你应该明白了吧!以上的我没有是试!你自己试一下吧!不知道对不对!
Response.Redirect("B/A.aspx"); //用户直接登陆login.aspx并通过验证,进入B文件夹下的A.aspx页
else
FormsAuthentication.RedirectFormLoginPage(userid,flase); //直接访问B文件夹内的C.aspx,则进入login.aspx通过验证,如果通过验证以后就进入C.aspx
if(FormsAuthentication.GetRedirectUrl(userid,flase).Endswith("B/A.aspx").ToString()==false)
你这句行不行的通啊?
//仅仅是获得导向页的地址,一般在使用时候要判断一下这个地址,如果为空(登陆者本来就是直接访问了登陆页),那么手动导向到指定页面。
FormsAuthentication.GetRedirectUrl() //这个方法,你不用手动HttpCookie cookie = new HttpCookie();了,他内部都作了,这是根本区别。但这样的傻瓜的方法通常都不能满足大家的需求,比如我们无法控制Cookie中写些什么额外信息,比如登陆者的角色。
FormsAuthentication.RedirectFormLoginPage()可以看看反编译代码:
public static void RedirectFromLoginPage(string userName, bool createPersistentCookie, string strCookiePath)
{
FormsAuthentication.Initialize();
if (userName == null)
{
return;
}
//下面设置了Cookie
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie, strCookiePath);
//导航
HttpContext.Current.Response.Redirect(FormsAuthentication.GetRedirectUrl(userName, createPersistentCookie), false);
}
-------------------------------
这个问题,其实就是判断用户是从哪个页面来的,如果是从登陆页来的,那么专向A.aspx,如果是从别的页面来的,那么登陆后就转向原来欲访问的页面,right?
so 只要GetRedirectUrl(),如果为string.Empty,那么说明是从登陆页来的,转向A.aspx。如果不为空,那么转向获得的地址。
string url = xxx.GetRedirctUrl();
if( url.Equals( string.Empty ) )
Response.Redirect("A.aspx");
else
Response.Redirect( url );
Response.Redirect("fff.aspx");
else
FormsAuthentication.RedirectFormLoginPage(userid,flase)
这个判断做是什么意思?有什么作用?
----------------------------------------------------------------------
这是别人的业务逻辑,没别的意思。他们就是要实现,如果是从default.aspx页来的,登陆后导航到fff.aspx,否则从哪儿来回哪儿去。
我在判断GetRedirctUrl()是否为空的时候总是不成功?不知道为什么?
具体应该怎么写哪?
string url = FormsAuthentication.GetRedirctUrl();
if( url.Equals( string.Empty ) )
Response.Redirect("B/A.aspx");
else
Response.Redirect( url );
这样写对吗?
所以,if(url.Equals(string.Empty)) 这句将永远为false
我在用session验证的时候到每一页都要判断session["username"]是否为空~!
如果我要是用了form验证是不是就不用每一页都要判断cookie是否为空了?????