首页 > 其他分享 >NET6 授权方式

NET6 授权方式

时间:2024-05-21 17:58:21浏览次数:23  
标签:Authorize 角色 方式 ActionResult Role user 授权 NET6 public

简单授权

以下代码限制为仅允许经过身份验证的用户访问 AccountController

[Authorize]
public class AccountController : Controller
{
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

如果要将授权应用于操作而不是控制器,请将 AuthorizeAttribute 属性应用于操作本身:

public class AccountController : Controller
{
   public ActionResult Login()
   {
   }

   [Authorize]
   public ActionResult Logout()
   {
   }
}

角色授权

jwt的Claims

        // 1.定义需要使用到的Claims
        var claims = new List<Claim> {
            new Claim("Name", "UserName"),
            new Claim(ClaimTypes.Role, "Admin"),
            new Claim(ClaimTypes.Role, "admin"),
            //new Claim(ClaimTypes.Role, "user"),
            //  ...
        };

角色叠加:控制器 + Action

/// <summary>
/// 授权api - 角色:控制器有角色,必须要有user角色才能访问
/// jwt token角色的key必须用ClaimTypes.Role,且值和Roles区分大小写
/// </summary>
[ApiController, Route("api/roleexists"), Authorize(Roles = "user")]
public class RoleExistsController : ControllerBase
{
    /// <summary>
    /// 与控制器的Authorize叠加作用,除了拥有user,还需拥有admin
    /// </summary>
    /// <returns></returns>
    [HttpGet, Route("getadminanduser"), Authorize(Roles = "admin")]
    public ActionResult<string> GetAdminAndUser()
    {
        return "GetAdminAndUser";
    }
}

角色多选一,满足一个就行

/// <summary>
/// 授权api - 角色: 控制器存在授权角色
/// jwt token角色的key必须用ClaimTypes.Role,且值和Roles区分大小写
/// </summary>
[ApiController, Route("api/rolenotexists")]
public class RoleNotExistsController : ControllerBase
{
    /// <summary>
    /// user 或 admin 其一满足即可
    /// </summary>
    /// <returns></returns>
    [HttpGet, Route("getadminoruser"), Authorize(Roles = "user,admin")]
    public ActionResult<string> GetAdminOrUser()
    {
        return "GetAdminOrUser";
    }
}

 

标签:Authorize,角色,方式,ActionResult,Role,user,授权,NET6,public
From: https://www.cnblogs.com/CRobot/p/18204671

相关文章

  • web常见的攻击方式有哪些?如何防御?
    一、是什么Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为如植入恶意代码,修改网站权限,获取网站用户隐私信息等等Web应用程序的安全性是任何基于Web业务的重要组成部分确保Web应用程序安全十分重要,即使是代码中很小的bug也有可能导致隐私信息被泄露......
  • 来玩 GitHub 啊,SSH 连接方式
    Windows11gitversion2.32.0.windows.2GitHub20240520-- 今天找回了自己的GitHub账号密码,继续玩吧,再次加入蓝星的开源软件基地。使用邮箱注册的,找回密码也很方便。 本文简要展示按照官方文档的介绍使用SSH连接GitHub的过程。简述为:创建SSH密钥对公钥注......
  • CyberRT_不同的启动方式的源码解读
    源码解读componentnodereader/writerservice/clientparameterscheduletransportapollo/cyber/cyber.ccCreateNode(){returnstd::unique_ptr<Node>(newNode(node_name,name_space))}apollo/cyber/init.ccInit() OnShutdown()apollo/cyber......
  • java的synchronized有几种加锁方式
    在Java中,synchronized关键字提供了内置的支持来实现同步访问共享资源,以避免并发问题。synchronized主要有三种加锁方式:1.同步实例方法当一个实例方法被声明为synchronized时,该方法将同一时间只能被一个线程访问。锁是当前对象实例(即this)。publicclassSynchronizedInstanceMet......
  • OC渲染农场的收费方式详解!
    OC渲染器是动画和设计师常用的高效渲染工具,能够实现超写实的画面效果。然而,由于OC渲染器依赖GPU硬件进行渲染,对本地电脑的配置要求较高,许多用户选择使用渲染农场。本文详细讲解渲染农场的收费方式,帮助大家解如何在降低成本的同时高效完成渲染任务。渲染农场通常支持OC渲染器,许多......
  • 微信授权登录
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`微信授权登录日期:2019-4-5阿珏折腾代码浏览:1874次评论:1条文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp14211353......
  • .NET6中使用Log4net记录日志(二)记录日志到SqlServer数据库
    1、引用NuGet包(System.Data.SqlClient) 2、创建SqlServer数据库表(ProgramLog)CREATETABLEProgramLog(IdINTIDENTITY(1,1)PRIMARYKEY,[Date]DATETIME,--记录时间[Level]NVARCHAR(128),--日志级别[RunTime]VARCHAR(128),--执行时长[Thread]NVARCHAR(256),--线程号[Lin......
  • Mysql变量声明的方式
    参考:https://www.cnblogs.com/Marydon20170307/p/14112059.html1.使用declare,这个必须用在存储过程或者函数中,不要@前缀。声明变量必须在存储过程、函数的顶部,先声明变量,再写其他逻辑。一次多个:declarestr1,str2varchar(10);--公用一个类型不一样的话,就一个个的声明:declarest......
  • .net6中使用EF core多个上下文迁移方式
    正常上下文在复制一个一模一样的上下文appsettings.json添加两个数据库连接字符串 Program.cs里边一样添加两个 控制台迁移命令必须加上-Context后边跟的是我们上下文的名称Add-MigrationMyMigration-ContextMYDBContext222保存到数据库命令一样Update-Data......
  • git切换连接方式(ssh-https)
      要将git仓库的ssh链接切换为https链接,可以按照以下步骤操作: 1.打开终端,并进入到本地的git仓库目录中。 2.使用以下命令查看当前git仓库的远程链接:gitremote-v3.使用以下命令移除当前的ssh远程链接:gitremoteremoveorigin4.使用以下命令添加https远程链......