小编Bri*_*ice的帖子

结合使用MVC页面和Web API页面的身份验证?

我有一个MVC 5 Web应用程序,可以使用Login.cshtml页面登录并获取cookie并且登录正常.但是,我想使用Web API进行登录,然后(可能)设置一个cookie,以便我登录我的MVC页面...(或使用MVC登录登录然后访问Web API)但是web api返回一个bearer token而不是cookie令牌...所以这不起作用.有没有办法结合使用我的MVC页面和我的Web API页面的身份验证?

更新:

这不是一个真正的代码问题,而是一个概念问题.

普通的MVC网页会检查一个名为".AspNet.ApplicationCookie"的cookie,以确定请求者的身份.通过调用ApplicationSignInManager.PasswordSignInAsync生成此cookie.

另一方面,WebAPI调用检查名为Authorization的项目的请求标头...并使用该值来确定请求者标识.这是从WebAPI调用"/ Token"返回的.

这些是非常不同的价值观.我的网站需要同时使用MVC页面 WebAPI调用(以动态更新这些页面)......并且都需要进行身份验证才能执行其任务.

我能想到的唯一方法是实际验证两次......一次是使用WebAPI调用,另一次是使用Login帖子.(见下面的答案).

这似乎非常hacky ...但我不明白授权代码足以知道是否有更合适的方法来实现这一点.

cookies asp.net-mvc asp.net-web-api bearer-token

23
推荐指数
1
解决办法
1万
查看次数

有没有办法让YTPlayerView在iPad上全屏播放?

loadWithVideoId:playerVars:我的目标playsinline@0.

我也在打电话ytPlayer.webView.allowsInlineMediaPlayback = NO;.

视频在iPhone上播放全屏,但在iPad上的Web视图中播放.

如何在iPhone和iPad上全屏播放?

youtube-api ipad ios

10
推荐指数
1
解决办法
1855
查看次数

来自iOS应用的ServiceStack和Facebook/Twitter身份验证

我的服务器上的ServiceStack内置了/ auth/facebook和/ auth/twitter的端点......但是这些只在你使用浏览器时才有用吗?...对于应用程序呢?

我有一个iOS应用程序,利用ACAccountStore对象中内置的Facebook和Twitter帐户.有了这些对象,我最终能够调用SLRequest.GetPreparedUrlRequest ...从这里我可以提取以下内容:

Facebook :(来自请求网址)access_token

Twitter :(来自请求标题)oauth_nonce,oauth_signature_method,oauth_timestamp,oauth_consumer_key,oauth_token,oauth_signature和oauth_version

我能以某种方式使用auth/facebook或auth/twitter登录,甚至可能注册具有内置功能的帐户吗?在我看来,这些端点是针对浏览器的.是否有其他方法可以做到这一点...或者我应该编写自己的端点来验证利用(例如在Facebook中)access_token并直接从Facebook图表获取服务器上的用户信息?

twitter facebook ios servicestack

8
推荐指数
0
解决办法
287
查看次数

Ajax查询与dataType一起使用:'text'失败,dataType:'text/xml; 字符集= UTF-8'

当我尝试使用dataType为'text/xml进行Ajax查询时; charset = utf-8'......我得到了一个解析错误.

  1. xml响应是有效的xml
  2. 响应标题显示Content-Type为'text/xml; 字符集= UTF-8' .
  3. 这不是跨域请求

这三个问题是其他parsererror问题的答案.

我的ajax看起来像这样:

        $('#submitLogin2').click(function (e) {
            e.preventDefault();
            var formData = $('#loginForm2').serialize();
            var url = 'http://somewhere.com/Api2.0/Session_Create.aspx';
            $.ajax({
                url: url, type: "POST", dataType: 'text/xml; charset=utf-8',
                data: formData, contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
                success: function (data) {
                    $('#loginResult').html(data.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/ /g, '&nbsp;').replace(/\n/g, '<br />'));
                },
                error: function (textStatus, errorThrown) {
                    alert(errorThrown);
                    alert(JSON.stringify(textStatus));
                }
            });
        });
Run Code Online (Sandbox Code Playgroud)

响应是:

<Response><Error code='0'>Invalid User Name or Password</Error></Response>
Run Code Online (Sandbox Code Playgroud)

'text'请求很有用......但是让Ajax为我解析xml会很好.有关如何使其工作的任何想法?

xml ajax xml-parsing

8
推荐指数
1
解决办法
756
查看次数

联合的两个网络图

有人能指出我正确的数据结构/算法来完成以下任务吗?

我想结合(Union?)以下两组节点来获得第三组.

谢谢!

在此输入图像描述

algorithm graph-theory topology nodes

7
推荐指数
1
解决办法
93
查看次数

使用Newtonsoft将JSON数组数组反序列化为List of Tuples

我从在线服务提供商处收到的数据如下:

{
  name: "test data",
  data: [
    [ "2017-05-31", 2388.33 ],
    [ "2017-04-30", 2358.84 ],
    [ "2017-03-31", 2366.82 ],
    [ "2017-02-28", 2329.91 ]
  ],
}       
Run Code Online (Sandbox Code Playgroud)

我想将它解析成一个看起来像这样的对象:

public class TestData
{
   public string Name;
   public List<Tuple<DateTime, double>> Data;
}
Run Code Online (Sandbox Code Playgroud)

我唯一能找到的是如何将一组对象解析成一个tulples列表,例如:Json.NET反序列化其他类型中的Tuple <...>不起作用?

有没有办法编写一个可以处理这个问题的自定义转换器?

c# arrays json tuples deserialization

7
推荐指数
2
解决办法
2905
查看次数

在TPL数据流中保证交付的BroadcastBlock

我有一个数据流,我以几种不同的方式处理...所以我想发送每个消息的副本我得到多个目标,以便这些目标可以并行执行...但是,我需要设置BoundedCapacity在我的块上,因为数据的流式传输方式比我的目标可以处理的速度快,并且有大量数据.如果没有BoundedCapacity,我会很快耗尽内存.

但是问题是如果目标无法处理它,BroadcastBlock将丢弃消息(由于BoundedCapacity).

我需要的是一个不会丢弃消息的BroadcastBlock,但实质上会拒绝其他输入,直到它可以向每个目标传递消息然后准备好更多.

有这样的东西,还是有人编写了一个以这种方式运行的自定义块?

task-parallel-library tpl-dataflow

6
推荐指数
1
解决办法
1487
查看次数

在 Xamarin 中,如何处理 WKWebView ShouldStartLoad 事件

使用 UIWebView 拦截 ShouldStartLoad 事件,我所要做的就是:

_webView.ShouldStartLoad += (webView, request, navigationType) => { return true }

我如何使用 WKWebView 处理这个问题?

ios xamarin wkwebview

6
推荐指数
1
解决办法
3400
查看次数

如何使用 Mapster 映射继承的类

我想通过使用以下语句在两个类之间进行映射:

var directoryDataModel = new DirectoryDM()
{
    Title = "School Directory",
    Persons = new List<PersonDM>()
    {
        new TeacherDM() { Name = "Johnson", Department = "Math" },
        new StudentDM() { Name = "Billy", Classes = new List<string>() { "Math", "Physics" } }
    }                
};
var directoryViewModel = directoryDataModel.Adapt<DirectoryVM>();
var directoryDataModel2 = directoryViewModel.Adapt<DirectoryDM>();
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能处理 Persons 列表中派生类的映射?

TeacherVM <=> TeacherDM 和 StudentVM <=> StudentDM

数据模型:

public class DirectoryDM
{
    public string Title;
    public List<PersonDM> Persons;
}
public class PersonDM
{
    public string Name; …
Run Code Online (Sandbox Code Playgroud)

c# mapping mapster

6
推荐指数
1
解决办法
3758
查看次数

IdentityServer4使用ApiKey或Basic身份验证直接到API

我正在使用 IdentityServer4 让我的客户通过 JavaScript 登录并访问网页和 api,并且运行良好。然而,有一个新的要求,而不是使用用户名和密码从身份服务器获取访问令牌,然后使用它通过承载身份验证访问 api...我需要使用“Basic”直接调用 api身份验证标头和 api 将与身份服务器确认身份。类似于下面用于访问 ZenDesk api 的代码...

\n
        using (var client = new HttpClient())\n        {\n            var username = _configuration["ZenDesk:username"];\n            var password = _configuration["ZenDesk:password"];\n            var token = Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password));\n            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", token);\n\n            var response = client.PostAsync("https://...\n
Run Code Online (Sandbox Code Playgroud)\n

对我如何实施这个有任何帮助吗?IdentityServer4 中是否内置了任何可以适应这种方法的东西?我将 .Net Core 3.1 用于 api 服务器和身份服务器。

\n

另一种(看似常见)方法是为每个用户生成一个 api 密钥,然后允许用户像这样调用 api...

\n
using (var client = new HttpClient())\n{\n    client.BaseAddress = new Uri(URL_HOST_API);\n    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("ApiKey", "123456456123456789");\n\xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

想法?

\n

c# basic-authentication api-key identityserver4

5
推荐指数
1
解决办法
4650
查看次数