Asp.net Core MVC 2.1-授权设置。 --

时间:2019-01-29 15:00:46

标签: asp.net-core-mvc

我正在为我的项目创建一个标识页面,我在互联网上的剃须刀页面中找到了一个示例,我设法使其适应MVC核心并得以执行,但是在启动它阻止的级别!

services.AddAuthentication(options =>  
{  
    options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;  
    options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;  
    options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;  
}).AddCookie(options =>  
{  
    options.LoginPath = new PathString("/Login");  
    options.ExpireTimeSpan = TimeSpan.FromMinutes(5.0);  
});  

services.AddMvc().AddRazorPagesOptions(options =>  
{  
    options.Conventions.AuthorizeFolder("/");  
    options.Conventions.AllowAnonymousToPage("Login");  
}); 

我应该怎么做才能使其适应我的mvc内核。 谢谢

1 个答案:

答案 0 :(得分:1)

您需要使用正确的pageName。如果直接在MVC项目的Pages文件夹下添加“登录剃须刀页面”,请使用/Login

services.AddMvc().AddRazorPagesOptions(options =>
        {
            options.Conventions.AuthorizeFolder("/");
            options.Conventions.AllowAnonymousToPage("/Login");
        });

更新:

在MVC中,您只需在Index操作上设置[Authorize]属性,然后使用

services.AddAuthentication(options =>
        {
            options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        }).AddCookie(options =>
        {
            options.LoginPath = new PathString("/Account/Login");
            options.ExpireTimeSpan = TimeSpan.FromMinutes(5.0);
        });
        services.AddMvc();