小编mat*_*teo的帖子

mvc如何在不重定向到LogIn视图的情况下返回未授权的代码

我的MVC Web应用程序为两种类型的用户提供服务.

  • 第一个通过标准Web浏览器;
  • 第二个通过REST返回仅返回JSON数据.

另外,

  • 两者都需要认证和授权;
  • 两种方案都根据路线进行区分,以便了解要提供的内容.

当用户访问应用程序时,如果他们未登录,则应用程序应以不同的方式做出反应.

  1. 在第一种情况下,它应该返回默认的LogIn页面(这很好).
  2. 在第二种情况下,它应该仅返回401 Unauthorized代码.

我习惯使用WCF REST服务,我可以在这里引发这样的异常:

throw new WebProtocolException(System.Net.HttpStatusCode.Unauthorized, exc.Message, exc);
Run Code Online (Sandbox Code Playgroud)

并收到401消息.我把statusCode这样的问题用在MVC中的相同方法的问题:

HttpContext.Response.StatusCode = (Int32)HttpStatusCode.Unauthorized
Run Code Online (Sandbox Code Playgroud)

它总是重定向到LogIn页面.

我怎样才能做到这一点?

我已经尝试重写AuthorizeAttribute并处理该OnAuthorization函数,但是一旦我将其设置statusCode为401,它就会被重定向到LogIn页面.

rest json asp.net-mvc-2

25
推荐指数
2
解决办法
9230
查看次数

为什么mvc Html.HiddenFor不会渲染我的字段?

我想做这个简单的事情

<%= Html.HiddenFor(model => model.Id)%>
Run Code Online (Sandbox Code Playgroud)

这个模型是

[HiddenInput(DisplayValue=true)]
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

但我总是得到这个渲染

<input type="hidden" value="0" name="UserInfo.Id" id="UserInfo_Id">
Run Code Online (Sandbox Code Playgroud)

我检查并且ID不是0 ..?!

这里需要一些解释......

编辑

问题似乎是下面提到的帖子.这很有效

<input type="hidden" value="<%= Html.AttributeEncode(Model.Id) %>" id="<%= Html.IdFor(model=>model.Id)%>" name="<%= Html.NameFor(model=>model.Id)%>" />
Run Code Online (Sandbox Code Playgroud)

感谢Manaf

asp.net-mvc-2

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

标签 统计

asp.net-mvc-2 ×2

json ×1

rest ×1