小编gal*_*mok的帖子

mvc6未经授权导致重定向

当我从Controller返回NotAuthorized IActionResult时,我一直在尝试阻止重定向,但无论我的尝试如何,NotAuthorized都会转换为Redirect.

我已经尝试了这里提到的(同样的问题,使用旧的beta框架,我使用1.0.0-rc1-final).我没有Notifications命名空间(已在rc1-final中删除).

这是我的登录控制器:

    [HttpPost]
    [AllowAnonymous]
    public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
    {
        if (ModelState.IsValid)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
            if (result.Succeeded)
            {
                return Ok(model);
            }
            if (result.IsLockedOut)
            {
                return new HttpStatusCodeResult((int)HttpStatusCode.Forbidden);
            }
            else
            {
                return HttpUnauthorized();
            }
        }
        return HttpUnauthorized();
    }
Run Code Online (Sandbox Code Playgroud)

在Startup.cs中,我尝试了以下变体:

        services.Configure<CookieAuthenticationOptions>(o =>
        {
            o.LoginPath = PathString.Empty;
            o.ReturnUrlParameter = PathString.Empty;
            o.AutomaticChallenge = false;
        });
Run Code Online (Sandbox Code Playgroud)

每次登录失败时(请忽略密码在Ok上返回)并且应该导致空的401页面,我将重定向到/ Account/Login.这里的诀窍是什么?

redirect identity unauthorized asp.net-core-mvc asp.net-core

9
推荐指数
2
解决办法
3684
查看次数

从控制器返回XDocument(dotnet coreclr)

我在控制器中有一个XDocument,我想将该服务器作为xml和json服务器(取决于请求的Accept标头)。

我正在使用dotnet core:

在我的startup.cs / ConfigureServices中,我有以下内容:

services.AddMvc().AddXmlDataContractSerializerFormatters();
Run Code Online (Sandbox Code Playgroud)

我的控制器本质上是这样的:

public async Task<IActionResult> getData(int id)
{
    XDocument xmlDoc = db.getData(id);
    return Ok(xmlDoc);
}
Run Code Online (Sandbox Code Playgroud)

使用发出请求时Accept: application/json,我将数据正确格式化为JSON。使用发出请求时Accept: application/xml,我仍然会收到JSON响应(与相同application/json)。

我也尝试过:

services.AddMvc().AddXmlSerializerFormatters();
Run Code Online (Sandbox Code Playgroud)

但这甚至更糟,因为甚至将普通对象用作JSON(XmlDataContractSerializer可以处理普通对象,但不能处理XDocument)。

当我添加[Produces("application/xml")]到控制器(使用AddXmlSerializerFormatters)时,在提供XDocument时出现Http 406错误,但是在返回普通对象时确实得到了XML输出。

我是否必须将XDocument转换为对象以从控制器输出XML?有没有简单的方法可以将XDocuments转换为对象?

.net xml controller asp.net-core-mvc asp.net-core

3
推荐指数
1
解决办法
1027
查看次数