2013-04-04 71 views
0

我在asp.net中制作了一个具有登录功能的应用程序。接取当前用户信息我是传递用户电子邮件重定向功能类似Asp.net阻止Direct url的使用

Session["email"] = TextBox1.Text; 
Response.Redirect("home.aspx?Id=" + Session["email"]); 

通过这个我得到我的下一个页面[email protected]

在这home.aspx页我收到来自的Page_Load函数值这样

string url = HttpContext.Current.Request.Url.AbsoluteUri; 
Uri myUri = new Uri(url); 
keyid = HttpUtility.ParseQueryString(myUri.Query).Get("Id"); 

问题是,当一个用户粘贴它允许他们访问他们的帐户的任何用户的直接链接。有没有将这些用户重定向到登录页面。

我GOOGLE了很多,但我不能能够找到这个答案[谁从登录页面只能接取的账户进来的用户。任何人都知道这个解决方案?

回答

1

下一页上简单地得到电子邮件这样的:

string email= Session["email"] 

会话存储服务器中,你不需要它传递的URL。

检查Session["email"]是否为空/空,如果它然后将它们重定向到登录/帐户页面。

+0

+1它工作很好的家伙。问题是当我检查会议[“电子邮件”]是空/空它抛出空例外 – 2013-04-04 06:17:56

+0

确保其非空...然后检查其值:http://stackoverflow.com/questions/7172910/checking-session如果是空的或不是 – highwingers 2013-04-04 06:20:59

+0

明白了吧。谢谢 – 2013-04-04 06:25:44

0

@abatishchev/@highwingers指定的答案是正确的,并且可以工作,除了一件事。

“会话不存储在浏览器中,但存储在服务器上。”

不过,从主页中的会话获取电子邮件似乎是要走到这里的方式。