我想在我的登录页面使用验证码身份验证服务器3中的页面,我该怎么做? 有没有样品来源? 我尝试使用Google reCaptcha,但它不起作用。 请帮我如何在identityServer3登录页面中创建验证码
0
A
回答
1
更好的问题是how to customize the login screen?
看到the documentation on customizing views
在IdentityServer的意见,可以通过以下两种方式之一进行定制:1) 定制由DefaultViewService提供的HTML模板,或者如果 更多的控制,需要2)定义定制IViewService
实现自定义IViewService
到change the full layout。 此外,如果您只想更改登录页面,请添加您的自定义html,其实现与existing login page相同的角度逻辑,并将其添加到名为templates
的文件夹中,文件名为_login.html
。 如果要修改layout(标题),那么此时需要执行相同的操作,命名文件_Layout.html
。 这全部在documentation中展示,上面列为“替换部分视图”。
1
这是我做到了,而无需使用IViewService
添加验证码脚本模板/ _layout.html头标记
<script src='https://www.google.com/recaptcha/api.js'></script>
添加片断登录在模板/ _login.html屏幕页面,用加入名称= “G-验证码 - 响应” 属性
<div class="g-recaptcha" name="g-recaptcha-response" data-sitekey="your sitekey"></div>
添加CspOptions吨Ø启动类,允许谷歌脚本
CspOptions = new CspOptions
{
Enabled = true,
FontSrc = "'self' data: fonts.gstatic.com",
StyleSrc = "'self' 'unsafe-inline' fonts.googleapis.com",
ScriptSrc = "'self' https://www.google.com https://www.gstatic.com; object-src 'self'",
FrameSrc = "https://www.google.com"
}
进样OwinEnvironmentService
一个到UserService类 - 这将让您抓住从验证码片断
private readonly OwinEnvironmentService _environmentService;
public UserService(OwinEnvironmentService environmentService)
{
_environmentService = environmentService;
}
在AuthenticateLocalAsync令牌,抢令牌和验证
var gReCaptchaResponse = _environmentService.GetLoginInput("g-recaptcha-response");
var client = new RestClient("https://www.google.com");
var request = new RestRequest("recaptcha/api/siteverify", Method.POST) { RequestFormat = DataFormat.Json };
request.AddParameter("secret", "YOUR SECRET");
request.AddParameter("response", gReCaptchaResponse);
var response = client.Execute(request);
var verficationStatus = JsonConvert.DeserializeObject<GReCaptcha>(response.Content);
if(!verficationStatus.Success)
{
Logger.Warn("Captcha invalid");
context.AuthenticateResult = new AuthenticateResult("Please verify that you are not a robot");
return Task.FromResult(0);
}
GetLoginInput(形式输入名称)扩展 (credit to martinip86 from Github
public static string GetLoginInput(this OwinEnvironmentService environmentService, string fieldName)
{
const string body = "owin.RequestBody";
if (!environmentService.Environment.Keys.Contains(body))
return null;
var owinFormData = environmentService.Environment[body] as System.IO.Stream;
if (owinFormData == null)
return null;
var formData = string.Empty;
using (var sr = new System.IO.StreamReader(owinFormData))
{
formData = sr.ReadToEnd();
}
if (string.IsNullOrWhiteSpace(formData))
return null;
var formDataParsed = HttpUtility.ParseQueryString(formData);
return formDataParsed[fieldName];
}
相关问题
- 1. 如何在JSP登录页面创建密码过期验证?
- 2. 如何创建Asp.net mvc安全登录页面身份验证?
- 3. 登录页面验证NIC号码
- 4. 使用创建登录页面进行验证在ASP.NET MVC 4
- 5. Azure Multifactor身份验证如何在登录页面上执行密码验证
- 6. 在asp页面上登录验证
- 7. MVC3登录:创建一个登录页面和用户身份验证
- 8. 如何使用IdentityServer3外部验证登录本地用户?
- 9. 在android中创建登录页面
- 10. 在LightSwitch中创建登录页面(VS2012)
- 11. 在android中创建登录页面
- 12. 如何在HTML或JAVASCRIPT中制作登录验证页面
- 13. 我创建登录页面
- 14. ORACLE APEX 5 - 如何使用身份验证创建自定义登录页面?
- 15. 如何从IdentityServer3登录页面返回自定义参数?
- 16. 登录验证时刷新页面
- 17. 烧瓶验证(登录页面)
- 18. 更改jHipster登录验证页面
- 19. LinkedIn登录身份验证PHP页面
- 20. yii用户登录后页面验证
- 21. 我如何从登录页面创建登录代码到索引?
- 22. Joomla Administrator登录面板的验证码
- 23. Rails登陆页面密码验证
- 24. 如何在Magento中创建自定义登录页面?
- 25. 如何在yii框架中创建静态登录页面?
- 26. 如何在Windows XP中创建自定义登录页面
- 27. 如何在WordPress中创建最终用户登录页面?
- 28. 如何在django中创建登录页面1.9.2
- 29. 如何在html中为登录页面创建会话
- 30. 如何在MVC2中创建简单登录页面