相关疑难解决方法(0)

如何为以下情况实现自定义Authorize属性?

所以我有我的行动方法

[Authorize(Roles="Admin")]
public ActionResult EditPosts(int id)
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我需要授权管理员,以便他们可以编辑帖子,但(这里是很酷的部分),我还需要允许帖子的创建者能够编辑一个普通用户的帖子.那么我怎样才能过滤掉创建帖子的用户以及管理员但是未经授权的其他人?我接受PostEntry id作为路由参数,但是在atribute之后,属性只接受常量参数,看起来非常困难,你的答案非常受欢迎,干杯!

.net c# asp.net asp.net-mvc-3

32
推荐指数
2
解决办法
4万
查看次数

在ASP.NET MVC中加密URL中的id

我正在尝试对Url中的加密ID进行编码.像这样:http://www.calemadr.com/Membership/Welcome/9xCnCLIwzxzBuPEjqJFxC6XJdAZqQsIDqNrRUJoW6229IIeeL4eXl5n1cnYapg+N

但是,它要么没有正确编码,我在加密中得到斜杠"/",或者我收到来自IIS的错误:请求过滤模块配置为拒绝包含双转义序列的请求.

我尝试了不同的编码,每个都失败了:

  • HttpUtility.HtmlEncode
  • HttpUtility.UrlEncode
  • HttpUtility.UrlPathEncode
  • HttpUtility.UrlEncodeUnicode

更新

问题是当我加密Guid并将其转换为base64字符串时,它将包含不安全的url字符.当然,当我试图导航到包含不安全字符的URL时,IIS(7.5/windows 7)会爆炸.Url编码base64加密字符串会引发IIS中的错误(请求过滤模块配置为拒绝包含双转义序列的请求.).我不确定它是如何检测双重编码的字符串但它确实如此.

尝试上述方法后编码base64加密字符串.我决定删除base64编码.但是,这会将加密文本保留为byte [].我尝试了UrlEncoding byte [],这是挂起httpUtility.Encode方法的重载之一.同样,虽然它是URL编码,但IIS不喜欢它,并提供了"找不到页面".

在网上挖掘后,我遇到了一个HexEncoding/Decoding类.将Hex编码应用于加密字节就可以了.输出是url安全的.另一方面,我对解码和解密十六进制字符串没有任何问题.

encryption asp.net-mvc

11
推荐指数
2
解决办法
3万
查看次数

标签 统计

.net ×1

asp.net ×1

asp.net-mvc ×1

asp.net-mvc-3 ×1

c# ×1

encryption ×1