using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using System;
namespace MySite.Filters
{
public class BlockFilter : IAuthorizationFilter
{
public BlockFilter()
{
}
public void OnAuthorization(AuthorizationFilterContext context)
{
if (context == null)
throw new ArgumentNullException(nameof(context));
context.Result = new RedirectResult("/"); //Redirect to you desired page
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class BlockAttribute : TypeFilterAttribute
{
public BlockAttribute() : base(typeof(BlockFilter))
{
}
}
}
3条答案
按热度按时间aiazj4mn1#
似乎没有这样一个选项来禁用注册。但你可以手动进行一些更改。
你可以先搭建两个身份页面:
Account\Register,
Account\Login
。编辑Register.cshtml.cs。如果用户登录到注册页面,则将其重定向到登录页面。
编辑Areas/Identity/Pages/Account/Register.cshtml,使其看起来像下面这样。
从Areas/Identity/Pages/Account/Login.cshtml中删除注册链接
3b6akqbq2#
虽然这些信息可能有点过时,但它仍然很有价值。
通过执行以下步骤,可以限制对ASP.NET核心标识中用户注册的访问:
导航到“ProjectPath\Areas\Identity\Pages\Account\Register.cshtml”文件。
添加条件语句以将访问权限限制为仅限经过身份验证的用户。否则,显示验证消息。
接下来,在“ProjectPath\Pages\Shared_LoginPartial.cshtml”视图中,在经过身份验证的代码块中重新定位“Register”链接。此步骤将确保对未经身份验证的用户隐藏链接
neskvpey3#
您可以使用过滤器来阻止对注册页面的请求。此示例过滤器将请求重定向到根路径,但您可以重定向到通知用户已禁用注册的页面。这样,您只需添加一个属性,而无需更改任何注册代码。