如何使登录页面成为ASP.NET MVC web应用程序中的启动页面
本文关键字:应用程序 web 启动 MVC ASP 登录 何使 NET | 更新日期: 2023-09-27 18:04:23
我想创建一个登录页面,在启动ASP.NET MVC web应用程序时打开该页面。我还想在成功登录后自动将用户重定向到主页/索引页面。
此外,登录页面有一个"注册"按钮,它被重定向到注册页面,我希望注册成功后,注册页面被重定向到主页/索引。
您不想将登录作为主页这不是一个好的设计主要是因为用户登录并在浏览器中输入https://yoursite.com
后,您不想再次显示登录页面。
相反,您只需要将[授权]应用于主控制器。
[Authorize]
public class HomeController : BaseController
{
// ...
}
或全局过滤器
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
}
如果用户访问您的主页,他/她将首先使用QueryString中的ReturnUrl重定向到登录页。
例如,https://yoursite/Account/Login?ReturnUrl=%2f
请确保在web.config中的loginUrl中设置登录页面。
<system.web>
...
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880"/>
</authentication>
</system.web>
您有两个选项:1.注册到您的登录页面的默认路由
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Login"}
);
}
- 使主页/索引需要授权访问,这样您将确保如果登录用户正在访问您的网站,他会直接进入经过验证的页面,而不是登录
路由是最好的选择。您可以通过更改配置文件来设置默认页面。您会发现有两个配置文件:1.app.config2.路由配置
通过使用路由配置,您也可以重写您的url:-
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
}
}
请注意,任何MVC应用程序都必须至少有一个路由定义才能运行。在上文中,名为"Default"的路由模板将添加到路由集合中。大括号中的项目包含Route Parameters,并由参数名称表示为大括号之间的占位符。路由段由正斜杠分隔(很像标准URL(。注意我们的路由指定的隐含相对URL如何与MVC约定相匹配:
~/{controller}/{action}
您也可以通过以下方式更改url:-路线。地图路线(name:"SiteMap",网址:"网站地图",默认值:new{controller="Static",action="SiteMap",id=UrlParameter.可选},命名空间:新字符串[]{"name.Web.Controllers"});
要设置默认页面:-最好的方法是改变你的路线。默认路线(在App_Start中定义(设置/主页/索引
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters*
new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
作为默认登录页。你可以将其更改为任何你想要的路线。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters*
new { controller = "Sales", action = "ProjectionReport",
id = UrlParameter.Optional }
);
希望你对此有一个清晰的想法