认证与授权组件 @malagu/security 。Malagu 框架结合传统后台管理系统和云计算平台的认证与授权理念,并借鉴了 Spring Security 设计思想,抽象了一套通用的认证与授权模型。Spring Security 对前后端分离架构支持不是特别友好,Malagu 框架在这方面也做了不少改进。

框架提供的认证与授权默认实现比较简单,认证是基于用户名与密码方式;授权是授权装饰器 + EL 表达式。但是,框架提供了很多扩展点,基于这些扩展点,我们可以实现各种各样复杂的认证与授权实现,例如 @malagu/oauth2-client 组件是基于 @malagu/security 组件扩展实现,提供了基于 ODIC 的认证和 OAuth2.0 的授权能力。

使用方法

框架提供了一个开箱即用的组件 @malagu/security ,该组件提供了一套默认的行为规则,例如

  • 默认的登录页面路由
  • 默认的登录提交路由
  • 默认的密码 Hash 算法
  • 默认的登录成功页面路由
  • 默认的登出成功页面路由
  • 默认的用户服务接口实现,从内存中加载用户信息。等等

大部分默认行为,我们无需自定义。有少量是需要我们根据业务情况自己实现的,比如登录页面、登录成功页面、登出成功页面,以及用户服务接口的实现(从数据库中加载用户信息)。安装 @malagu/security 组件如下:

yarn add @malagu/security # 或者 npm i @malagu/security

实现登录页面

在登录页面中,默认需要通过 POST 方法(可以自定义),并且携带用户名(username)和密码(password)信息发送请求到 /login ,该动作将触发认证流程。

默认提供的内置用户信息:用户名/密码为 admin/123456(我们也可以实现用户服务接口 UserService ,提供真实业务的用户信息)。在后端,当用户名和密码认证成功,则跳转到登录成功页面,默认登录成功页面路由是 / ,否则,跳转到登录页面 /login

接口与页面保护

当我们添加了该组件后,默认对外的接口方法和页面都会被保护起来(可以通过属性 malagu.security.enabled 全局关闭方法保护),需要登录以后才能访问接口方法。我们也可以给接口方法配置需要拥有什么样的权限才能访问,该组件默认提供了 @PreAuthorize 装饰器,定义接口方法需要什么样的权限才能够被访问。

@Get()
@PreAuthorize('hasRole("admin")')  // 表示当前登录的用户需要拥有管理员角色才可访问
@Transactional({ readOnly: true })
list(): Promise<User[]> {const repo = OrmContext.getRepository(User);return repo.find();
}

当没有登录的时候,通过 ajax 直接访问接口,将返回 401 状态码;通过浏览器访问页面,将返回 302 状态码,重定向到登录页面,登录成功后,又会重定向到最开始要访问的页面。

登录成功后,当我们有权限访问该方法或页面,则访问成功,否则,访问失败,返回 403 状态码。

匿名访问

方法上添加装饰器 @Anonymous ,可以让方法可以匿名访问。

@Get()
@Anonymous()
@Transactional({ readOnly: true })
list(): Promise<User[]> {const repo = OrmContext.getRepository(User);return repo.find();
}

也可以添加到类上,让类的所有方法可以里面访问。

@Controller('users')
@Anonymous()
export class UserController {...
}

相关链接

  • Malagu 框架项目地址
  • Malagu 框架文档地址

易商云页面认证失败是什么情况_Serverless 云原生框架 Malagu:认证与授权相关推荐

  1. 洛奇英雄转无法读取游戏服务器状态,洛奇英雄传无法连接服务器认证失败处理方法讲解...

    洛奇英雄传无法连接服务器认证失败处理方法讲解,游戏里玩家要是因为服务器断开而耽误了砍怪那就是麻烦事了.下面带来洛奇英雄传无法连接服务器认证失败处理方法,无法解答的小伙伴可以过来参考. 洛奇英雄传服务器 ...

  2. secoclient认证失败解决方法

    SECOCliet是中国国家密码管理局公布的加密产品,并且它支持USBKey.文件证书及云证书三种认证方式.如果使用SECOCliet进行认证时遇到了失败,可能是以下几种情况: 证书过期:SECOCl ...

  3. LDAP服务器不支持chap认证,终端使用EIA进行PEAP-GTC认证失败的原因分析

    跟现场确认,现场认证的账号是从通用LDAP服务器同步过来的,配置的是PEAP-GTC认证.让现场反馈认证时的UAM调试日志和抓包:首先分析UAM调试日志如下: %% 2017-12-05 16:04: ...

  4. 深信服AC苹果用户上网认证失败,认证mac地址和用户终端mac地址不一致

    环境: 深信服V13.0.47 苹果手机 IOS14 1个账号绑定2个终端上网 问题描述: 深信服AC苹果用户上网认证失败,认证mac地址和用户终端mac地址不一致,昨天认证成功,今天出现再认证,认证 ...

  5. 如何查看服务器资源占用情况,云服务器如何查看内存占用情况

    云服务器如何查看内存占用情况 发布时间:2020-05-26 15:28:18 来源:亿速云 阅读:508 作者:栢白 云服务器如何查看内存占用情况?云 我们以 Linux 云服务器为例,介绍几个常用 ...

  6. 群晖设置腾讯云ddns显示认证失败的两种解决办法【实测第二种成功了】

    群晖腾讯云ddns显示认证失败 背景: 问题: 前提条件 解决办法一:群晖自带的ddns解析 步骤1:获取 API 密钥信息 步骤2:群晖(Synology)NAS 配置 DDNS 解决办法二:利用D ...

  7. Spring Security总结之如何让认证失败消息自定义在前端页面显示(一)

    采用springboot+thymeleaf 前端登录页面代码 <form action="/doLogin" method="post">用户名: ...

  8. 易支付代付系统 易商付(espay.cn)提供 全新UI页面设计功能齐全

    介绍: 今天首发一款我们自己研发的易商付代付系统,本系统是提供给商户平台提现等使用,程序全面开源发布,无BUG已过各类平台检测,可自行测试! 使用本程序需先申请:支付宝单笔转账功能.微信付款到零钱功能 ...

  9. 为何亚马逊的中国电商之路以失败收场?当当网创始人这样说

    谈到亚马逊中国电商业务为何会失败?当当网创始人李国庆及多位受访人士认为,这与亚马逊水土不服.不重视中国市场,中国区负责人毫无权力有很大关系. 亚马逊没有逃过外企入华的"本土化魔咒" ...

最新文章

  1. Spring事务之Propagation
  2. java中椭圆类_Java中的Graphics2D类基本使用的教程
  3. OpenCV使用GDAL读取地理空间栅格文件
  4. 在线教育音视频技术探索与应用
  5. ActiveMQ点对点通讯,生产者-消费者
  6. 泛型算法STL中的迭代器,泛型算法,萃取机的一个实现案例
  7. char类型是多少 mat_opencv之Mat数据类型
  8. 网络对抗技术作业一 201421410031
  9. CentOS6.x系统挂载NTFS分区的移动硬盘
  10. 【JAVA 第五章 】课后习题 随机数统计
  11. Struts2 返回 json 格式数据
  12. vue js中解决二进制转图片显示问题
  13. python创建一个csv文件_Python程序中用csv模块来操作csv文件的基本使用教程
  14. OpencV使用fitEllipse拟合椭圆后,获取椭圆参数
  15. 组态软件(Configure)
  16. 转:计算机视觉专业词汇(中英文对照)
  17. 如何绘制变参数根轨迹(针对复杂情况,无法分离出开环增益k*时)
  18. 安卓日历每日提醒_Android日历事件管理器,是时候为你的APP增加一个事件提醒功能啦!...
  19. 【yum是什么?】centos7基于阿里云,配置网络yum
  20. RxJava的Single、Completable以及Maybe

热门文章

  1. Unity3D谷歌地球
  2. 阿里云DLA新功能来袭 查询MongoDB嵌套字段更方便
  3. 一键托管,阿里云全链路追踪服务正式商用:成本仅自建1/5或更少
  4. 亿级消息系统的核心存储:Tablestore发布Timeline 2.0模型
  5. MaxCompute MapReduce
  6. “华为云-东吴杯”圆满成功,顶尖参赛者推动“智造”场景结构升级
  7. 刷爆了!GitHub标星1.6W,这个 Python 项目太实用!
  8. 开发者如何写好技术简历?
  9. 云计算的概念 - 初识云计算知识专栏(1)
  10. 你需要掌握的事件分发高阶知识