如果用户使用ASP.NET直接在浏览器中访问URL,如何重定向到登录页面

时间:2016-04-19 13:12:40

标签: c# asp.net entity-framework-6

我正在研究asp.net实体框架。我只想通过登录访问页面,而不是直接输入页面的URL。如果用户输入页面的URL并尝试访问它,则应将其重定向到登录页面。 我怎样才能做到这一点?用户应该使用DB的用户名和密码登录。 我是ASP.NET的新手

4 个答案:

答案 0 :(得分:6)

您正在寻找的功能可以通过将以下身份验证/授权部分添加到ASP.NET Web.config文件来实现,如以下示例所示:

<system.web>
  <authentication mode="Forms">
    <forms name="SomeName" 
           loginUrl="Login.aspx" 
           protection="All" 
           path="/">
    </forms>
  </authentication>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

它基本上拒绝未经身份验证的用户的所有访问权限:如果此类未经身份验证的用户尝试访问您网站上的任何页面,则他/她将被重定向到Login.aspx页面(MSDN上的详细信息https://msdn.microsoft.com/en-us/library/wce3kxhd.aspxhttps://msdn.microsoft.com/en-us/library/xdt4thhy.aspx)。

希望这会有所帮助。

答案 1 :(得分:1)

如果您使用asp.net Identity来记录用户(我相信这是新MVC项目的默认设置),那么您可以使用数据注释在控制器上设置此功能。它应该看起来像

//GET
[Authorize]
public ActionResult Index(){
    return View();
}

这可能会自动执行您想要的操作。如果您最终需要明确定义Authorize属性将重定向用户的位置,那么答案很好here.

答案 2 :(得分:-1)

使用Session变量。 用户登录后,立即创建会话变量并在其中存储一些值。在每个页面加载事件中,对会话变量是否存在设置if条件。在else条件下,将用户重定向到登录页面。每次注销时,释放会话变量。

答案 3 :(得分:-1)

您可以在代码后面尝试此操作

        if (User.Identity.IsAuthenticated == true)
        {
            Response.Redirect("The Page you want");
        }

        else
            Response.Redirect("Login.aspx"); // redirect it to your login page