2016-04-22 80 views
1

我是一个新的蜜蜂,为我的应用程序创建一个asp.net Web应用程序。我将有不同的用户,我没有使用任何特殊的形式或方法来进行登录。我有访问数据库,在那里我有一些用户角色,公司,用户名和密码。 在我的登录页面通过文本框我会得到公司用户名和密码输入的最终用户。那么我会检查公司和用户名(这是表中的主键),如果密码匹配,则会查找用户角色并重定向到每个用户的页面。 现在工作正常。 我有一个注销按钮,这是坐在SITEMASTER页面和如何在网站上正确登录

 <div id="logout" runat="server" visible="false" class="navbar-brand1"> 
        <a id="lo" runat="server" href="/Default">Log Out </a> 
      </div> 

然后在我想要显示的注销我将调用代码

Master.FindControl("logout").Visible = true; 

它工作正常的网页在登录和注销方面。但事实上,注销按钮只是重定向到网站的第一页,如果我们在浏览器中做后退箭头,我可以返回到前一页。有没有什么办法可以整齐地做到这一点,以便退出后,即使我回到浏览器,它会要求登录。

任何帮助将非常感激。我犯了一个错误,并创建完整的应用程序,现在我担心这个功能,所以技术上我没有注销:(

+1

当用户登录时,将用户名设置为会话变量。另外,当用户打开系统中的每个页面时,请检查该会话变量是否为空。如果为空,则重定向到LogIn页面。当用户注销清除会话。 –

+0

这似乎是一个好方法。你能否给我提供一些代码。很多谢谢 –

+0

答案下面提供了示例代码。 –

回答

1

每当用户在下面的代码系统使用打开一个页面,以检查会话是否有效

if (!IsPostBack) 
     { 
      if (Convert.ToString(Session["UserName"]).Length <= 0) 
      { 
       Response.Redirect("Login.aspx"); 
      } 
     } 

当用户点击按钮SignOut,使重定向到SignOut.aspx页面。在SignOut.aspx的表单加载事件中使用下面的代码清除会话。

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session.Abandon(); 

    Session.Contents.RemoveAll(); 

    System.Web.Security.FormsAuthentication.SignOut(); 

    Response.Redirect("Login.aspx"); 
} 
+0

你在哪里设置会话[“用户名”]值?所以它总是通过重定向去登录页面我猜? –

+0

您必须在登录页面中设置它。是的,当用户注销它将首先进入signout.aspx页面,然后从那里重定向到登录页面。 –

0

作为@Chathuranga Ranasinghe提到我用会话varibale存储用户名的细节,我会检查会话变量空然后去我的默认页面,否则继续。

if (((string)Session["iden"])) 
     { 
      Response.Redirect("/Default.aspx"); 
     } 

我用这个页面上自带登录后,它对于我来说,现在工作得很好。

0

那么,你的问题是如何做

正确登录

正确的方法是不是推倒重来,而是使用内置在ASP.NET框架

https://msdn.microsoft.com/en-us/library/ms731049%28v=vs.110%29.aspx

它会给你很多额外的功能,如使用OpenAuth等

例 “https://msdn.microsoft.com/en-us/library/aa354509%28v=vs.110%29.aspx

+0

我知道还有其他方法可以做到这一点,但是我提到我已经完成了应用程序,我无法继续工作,所以只需调整设置以保存来自网站的数据。 –