使用授权属性验证用户登录的身份

本文关键字:登录 身份 用户 验证 授权 属性 | 更新日期: 2023-09-27 18:11:12

我正在创建一个新的ASP。. NET web应用程序,我不打算利用"角色"的概念。但是,我确实希望确保用户登录到某些页面。是否有任何现有的属性可以简单地检查用户是否已登录并将其重定向,或者如果未登录则抛出错误?我所做的每一次搜索都指向使用角色(例如这个角色)。

使用授权属性验证用户登录的身份

如果发起请求的用户已登录并且只在控制器和操作方法上工作,则[Authorize]属性将成功返回。

它可以用来修饰一个特定的动作:

public class FooController : Controller
{
    // only FooAction requires authentication in FooController
    [Authorize]
    public async Task<ActionResult> FooAction()
    {        
    }
    public async Task<ActionResult> BarAction()
    {
    }
}

…或者整个控制器:

// all actions in FooController require authentication
[Authorize]
public class FooController : Controller
{
    public async Task<ActionResult> FooAction()
    {        
    }
    public async Task<ActionResult> BarAction()
    {
    }
}

您也有Request.IsAuthenticated,可用于动作和非动作方法:

if (Request.IsAuthenticated) //or @if in Razor
{
    //request is authenticated 
}

…甚至User.Identity.IsAuthenticated,正如@Darko在他的回答中正确指出的那样。就我个人而言,我更喜欢Request.IsAuthenticated而不是User.Identity.IsAuthenticated,因为它还为UserUser.Identity提供了一些有用的空检查。以下是Request.IsAuthenticated在引擎盖下的样子:

public bool IsAuthenticated
{
    get
    {
        return(_context.User != null 
               && _context.User.Identity != null 
               && _context.User.Identity.IsAuthenticated);
    }
}

你可以使用User属性,只是把if()放在它可以控制访问的地方,就是这样。保护无效Page_Load(对象发送者,EventArgs e)

{
    if (User.Identity.IsAuthenticated)
    {
        Page.Title = "Home page for " + User.Identity.Name;
    }
    else
    {
        Page.Title = "Home page for guest user.";
    }
}

这应该在你设置网页后工作。配置。这里是文档https://msdn.microsoft.com/en-us/library/9wff0kyh(v=vs.85).aspx