php facebook授权登录获取头像_IdentityServer4从数据库获取User登录并对Claims授权验证(五)...
本节将在第四节基础上介绍如何实现IdentityServer4从数据库获取User进行验证,并对Claim进行权限设置。
一、新建Web API资源服务,命名为ResourceAPI
(1)新建API项目,用来进行user的身份验证服务。
(2)配置端口为5001
安装Microsoft.EntityFrameworkCore包
安装Microsoft.EntityFrameworkCore.SqlServer包
安装Microsoft.EntityFrameworkCore.Tools包
(3)我们在项目添加一个 Entities文件夹。
新建一个User类,存放用户基本信息,其中Claims为一对多的关系。
其中UserId的值是唯一的。
新建Claims类
继续新建 UserContext.cs
(4)修改startup.cs中的ConfigureServices方法,添加SQL Server配置。
完成后在程序包管理器控制台运行:Add-Migration InitUserAuth
生成迁移文件。
(5)添加Models文件夹,定义User的model类和Claims的model类。
在Models文件夹中新建User类:
新建Claims类:
做Model和Entity之前的映射。
添加类UserMappers:
类UserContextProfile:
(6)在startup.cs中添加初始化数据库的方法InitDataBase方法,对User和Claim做级联插入。
(7)在startup.cs中添加InitDataBase方法的引用。
运行程序,这时候数据生成数据库UserAuth,表Users中有一条UserName=zhubingjian,Password=123的数据。
二、实现获取User接口,进行身份验证
(1)先对API进行保护,在Startup.cs的ConfigureServices方法中添加:
并在Configure中,将UseAuthentication身份验证中间件添加到管道中,以便在每次调用主机时自动执行身份验证。
app.UseAuthentication();
(2)接着,实现获取User的接口。
在ValuesController控制中,添加如下代码:
好了,资源服务器获取User的接口完成了。
(3)接着回到AuthServer项目,把User改成从数据库进行验证。
找到AccountController控制器,把从内存验证User部分修改成从数据库验证。
主要修改Login方法,代码给出了简要注释:
可以看到,在IdentityServer4更新后,旧版获取tokenResponse的方法已过时,但我按官网文档的说明,使用新方法(注释的代码),获取不到信息,还望大家指点。
官网链接:https://identitymodel.readthedocs.io/en/latest/client/token.html
所以这里还是按老方法来获取tokenResponse。
(4)到这步后,可以把Startup中ConfigureServices方法里面的AddTestUsers去掉了。
运行程序,已经可以从数据进行User验证了。
点击进入About页面时候,出现没有权限提示,我们会发现从数据库获取的User中的Claims不起作用了。
三、使用数据数据自定义Claim
为了让获取的Claims起作用,我们来实现IresourceOwnerPasswordValidator接口和IprofileService接口。
(1)在AuthServer中添加类ResourceOwnerPasswordValidator,继承IresourceOwnerPasswordValidator接口。
(2)ProfileService类实现IprofileService接口:
(3)发现代码里面需要在ResourceAPI项目的ValuesController控制器中
添加根据UserId获取User的Claims的接口。
(4)修改AuthServer中的Config中GetIdentityResources方法,定义从数据获取的Claims为role的信息。
(5)在GetClients中把定义的mvc.profile加到Scope配置
(6)最后记得在Startup的ConfigureServices方法加上
.AddResourceOwnerValidator()
.AddProfileService();
运行后,出现熟悉的About页面(Access Token后面加上去的,源码上有添加方法)
本节介绍的IdentityServer4通过访问接口的形式验证从数据库获取的User信息。当然,也可以写成AuthServer授权服务通过连接数据库进行验证。
另外,授权服务访问资源服务API,用的是ClientCredentials模式(服务与服务之间访问)。
参考博客:https://stackoverflow.com/questions/35304038/identityserver4-register-userservice-and-get-users-from-database-in-asp-net-core
源码地址:https://github.com/Bingjian-Zhu/Mvc-HybridFlow.git
相关文章:
从Client应用场景介绍IdentityServer4(一)
IdentityServer4-EF动态配置Client和对Claims授权(二)
IdentityServer4-客户端的授权模式原理分析(三)
IdentityServer4-MVC+Hybrid实现Claims授权验证(四)
基于IdentityServer4 实现.NET Core的认证授权
IdentityServer4与ocelot实现认证与客户端统一入口
使用Dapper持久化IdentityServer4
原文地址: https://www.cnblogs.com/FireworksEasyCool/p/10181681.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
php facebook授权登录获取头像_IdentityServer4从数据库获取User登录并对Claims授权验证(五)...相关推荐
- php获取数据库头像,phpcms获取头像如何写入数据库
phpcms获取头像如何写入数据库? 使用的是qq登录, 目前已经获取都qq登录的 昵称 和 头像, 头像的数据保存在哪里呢?怎么写入啊 回复讨论(解决方案) zhaoji,在线等啊 我是将头像存到服 ...
- php获取头像,WordPress中用于获取及自定义头像图片的PHP脚本详解
get_avatar()(获取头像)get_avatar() 函数用来获取置顶邮箱或者用户的头像代码,在评论列表中非常常用. 这个函数提供一个 get_avatar 过滤器,用来过滤头像的 Html ...
- php 自动获取头像,PHP_WordPress中用于获取及自定义头像图片的PHP脚本详解,get_avatar()(获取头像)
get_avat - phpStudy...
WordPress中用于获取及自定义头像图片的PHP脚本详解 get_avatar()(获取头像)get_avatar() 函数用来获取置顶邮箱或者用户的头像代码,在评论列表中非常常用. 这个函数提供 ...
- 微信小程序简单实现获取用户授权、用户头像并保存到本地
文章目录 一.获取用户授权 二.获取用户头像并保存 三.实现效果 一.获取用户授权 以index单页面示例, 1.在index.js中的Page-data注册canIUse,用于调用微信开放接口申请用 ...
- 5.3Role和Claims授权「深入浅出ASP.NET Core系列」
5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...
- 微信小程序实现登录获取头像昵称
微信小程序如何来获取用户头像昵称 大家一定对下面这个图不陌生吧,我们在进入小程序之前,都会遇见类似这样的情况,那么这个是怎么用微信开发者工具实现的呢? 要求 1.首先,我们打开微信开发者工具,新建一个 ...
- Android 集成QQ登录,获取头像与昵称
QQ登录集成 腾讯开放平台地址:http://open.qq.com/ 如果没注册过的同学需要先注册,还要上传自己的手持身份证的证件照,腾讯审核通过后才能注册成功. 创建应用,获取appID.如果测试 ...
- uni-app微信小程序微信登录(获取头像、个性签名等基本信息)
1.思路 微信小程序用微信授权登录的思路:官方在线文档 1.前端调用调uni.login() 获取临时登录凭证code ,并将获取的用户信息和code回传到后端: 2.后端调用 auth.code2S ...
- 抖音小程序request封装,登陆授权获取头像方案,及广告加载注意事项
api.js 文件 封装request var n = function (t, n, r, o, i, a) {return i && tt.showLoading({title: ...
- 微信小程序——按钮登录获取用户头像昵称、不需要获取权限就能显示头像和昵称、获取手机号(云端)
1.登录获取用户头像昵称 代码 app.js App({globalData: {userInfo: null},onLaunch() {} }) . . . index.js const app = ...
最新文章
- 打印product所有attachment 具体信息的小工具
- docker添加jar包_docker配置容器运行jar包
- 第四十四期:1.3万亿条数据查询如何做到毫秒级响应?
- java从键盘上录入任何整数,输出该整数的阶乘
- GitHub中README.md文件的编辑
- 土耳其电信与华为签署5G协议谅解备忘录
- RHEL6基础三十七之系统时间修正、GRUB背景图片修改
- mac上数据库管理工具Navicat Premium 连接mySQL
- Python-《转载-Github上的python开源项目》
- Linux系统刻盘失败,linux下如何刻盘
- xheditor漏洞 php,xheditor默认upload.php畸形文件上传漏洞
- 网盘搜索引擎原理大揭秘
- oracle 配置不能保存,Oracle Net Manager保存网络配置提示无效条目Error writing entr
- 安全防御----防火墙
- ARM6818开发板画任意矩形,圆形,三角形,五角星,6818开发板画太极,画五星红旗(含码源与思路)
- 火影忍者379话最新情报
- PyTorch 入门:训练一个深度神经网络(DNN)
- 群联金士顿惠普自封颗粒对应ID及相关数据表
- 动态骨骼Dynamic Bone优化
- 计算机集成过程系统的现状及发展,信息系统集成的现状与未来发展
热门文章
- 从Slice_Header学习H.264(二)--片头的子语法项目
- ffmpeg代码实现自定义decoder
- 页面回收之shrink_zone的实现
- Linux内核部件分析 设备驱动模型之device-driver
- SDP在SIP协议中的应用
- flutter 全选_Android Studio写flutter快捷键
- idea每次都要配置tomcat_午饭收藏夹里的c位石锅拌饭,每次来到都要等位......
- 学生如何免费使用Jetbrains旗下包含Pycharm等开发工具(中文详细教程)
- Hbase KeyValue结构详解
- Ubuntu20.04下使用C++ OpenCV单应性矩阵