在Asp.Net 5中的Request.IsAuthenticated功能

noo*_*les 18 asp.net-core

是否存在Request.IsAuthenticated隐藏在某处的Asp.Net 5中的等价物,或者我们是否希望循环使用用户的身份并自行确定?

Mar*_*eke 31

如果您只需要知道User对象是否经过身份验证,那么此属性应该可以解决问题:

User.Identity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)

如果您需要阻止未经身份验证的用户调用操作,则以下属性类可以正常工作.

public class BasicAuthAttribute : ActionFilterAttribute, IAuthenticationFilter
{
    public void OnAuthentication(AuthenticationContext filterContext)
    {
    }

    public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
    {
        var user = filterContext.HttpContext.User;
        if (user == null || !user.Identity.IsAuthenticated)
        {
            filterContext.Result = new HttpUnauthorizedResult();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在我的基本控制器类中使用它,如下所示.

[BasicAuth]
public abstract class BaseAuthorizedController : Controller
Run Code Online (Sandbox Code Playgroud)

  • 框架中已有 [Authorize] 属性,您可以将该属性添加为全局属性,而无需使用基本控制器,例如: opt.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build())); 还有一个 [AllowAnonymous] 属性,因此您可以在登录页面中使用该属性。 (2认同)