Request.IsAuthenticated ASP.NET 中的函数 5
Request.IsAuthenticated function in ASP.NET 5
ASP.NET 5 中是否有等价于 Request.IsAuthenticated
的东西隐藏在某处,或者我们是否希望循环遍历用户的身份并自行确定?
如果您只需要知道用户对象是否经过身份验证,这个 属性 应该可以解决问题:
User.Identity.IsAuthenticated
如果您需要防止未经身份验证的用户调用某个操作,以下属性 class 非常有用。
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();
}
}
}
我在我的基本控制器中使用它 class 如下。
[BasicAuth]
public abstract class BaseAuthorizedController : Controller
您还可以通过在服务层中注入 IHttpContextAccessor
来访问 IsAuthenticated
属性,如下所示:
public class MyService : IMyService {
private readonly IHttpContextAccessor httpContextAccesor;
public MyService(IHttpContextAccessor httpContextAccessor) {
this.httpContextAccessor = httpContextAccessor;
}
public void MyMethod() {
var isAuthenticated = this.httpContextAccessor.HttpContext.User.Identity.IsAuthenticated;
if (isAuthenticated) {
// Authenticated, do something!
}
}
}
ASP.NET 5 中是否有等价于 Request.IsAuthenticated
的东西隐藏在某处,或者我们是否希望循环遍历用户的身份并自行确定?
如果您只需要知道用户对象是否经过身份验证,这个 属性 应该可以解决问题:
User.Identity.IsAuthenticated
如果您需要防止未经身份验证的用户调用某个操作,以下属性 class 非常有用。
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();
}
}
}
我在我的基本控制器中使用它 class 如下。
[BasicAuth]
public abstract class BaseAuthorizedController : Controller
您还可以通过在服务层中注入 IHttpContextAccessor
来访问 IsAuthenticated
属性,如下所示:
public class MyService : IMyService {
private readonly IHttpContextAccessor httpContextAccesor;
public MyService(IHttpContextAccessor httpContextAccessor) {
this.httpContextAccessor = httpContextAccessor;
}
public void MyMethod() {
var isAuthenticated = this.httpContextAccessor.HttpContext.User.Identity.IsAuthenticated;
if (isAuthenticated) {
// Authenticated, do something!
}
}
}