我是ASP .NET Core 2.1的初学者,并且正在研究使用ASP.NET Core 2.1进行个人身份验证的项目。我想将登录页面作为默认路由,而不是“首页/索引”:
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
任何帮助我如何将其更改为ASP .NET Core 2.1,因为Login现在被用作剃刀页面而不是MVC操作视图。
答案 0 :(得分:6)
在 ConfigureServices 方法中使用它。
services.AddMvc().AddRazorPagesOptions(options=> {
options.Conventions.AddAreaPageRoute("Identity", "/Account/Login","");
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
然后使用配置方法
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
答案 1 :(得分:1)
我通过在ConfigureServices
函数(Startup.cs)中使用此代码来解决此问题
services.AddMvc().AddRazorPagesOptions(options => {
options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "/Account/Login");
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
答案 2 :(得分:0)
这可能会有所帮助,我自己无需更改默认页面
https://exceptionnotfound.net/setting-a-custom-default-page-in-asp-net-core-razor-pages/
答案 3 :(得分:0)
只需在您的配置中使用它。这会将AuthorizeAttribute添加到您的页面
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Home/Index");
});
或更改默认路由:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Employees/Index", "");
});
如有必要,请参见此页面:here
答案 4 :(得分:0)
将此代码插入Startup.cs中的ConfigureServices()
{
services.AddMvc().AddRazorPagesOptions(options =>
{
//Registering 'Page','route-name'
options.Conventions.AddPageRoute("/Account/Login", "");
});
}
答案 5 :(得分:0)
一段时间后,我解决了它。需要为 AREAS =>
添加 ALLOW services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddRazorPagesOptions(options =>
{
options.AllowAreas = true; //--working after add this line
options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "");
});
答案 6 :(得分:0)
添加授权策略,以使应用程序默认情况下要求用户对abc文件夹下的页面进行身份验证,而不要求在abc文件夹下的某些公共页面。
services.AddRazorPages().AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/abc");
options.Conventions.AllowAnonymousToPage("/abc/PublicPage");
});