【发布时间】:2012-04-08 22:51:13
【问题描述】:
为了在使用控制器方法上的 [Authorize] 属性后保留发布数据,然后将用户重定向到登录页面,然后在成功验证后将用户重定向到他们打算去的地方 - 如何这能做到吗?默认情况下不中继原始表单提交。对之前帖子的回复说:
您需要将表单值和 RedirectUrl 序列化到隐藏字段。 身份验证后,反序列化隐藏字段中的数据并根据 RedirectUrl 的值进行重定向。 您将需要一个自定义的 Authorize 类来处理这个问题。
我的问题是——有什么例子可以进一步指出我正确的方向吗?是的,我可以将 [Serialize] 标签添加到控制器类,但我不知道创建自定义 Authorize 类有什么帮助?我在网上看到很多关于创建自定义 Authorize 类的材料,但是反序列化在哪里进行呢?如果你能更深一层或两层,那将有很大帮助。我是新手。
(我会评论之前的帖子,但我是该网站的新手,还没有积累足够的积分。我也会放一个指向其他帖子的链接,但它说新用户也不能显示链接!)
【问题讨论】:
-
如果提交表单本身需要授权,为什么还要显示表单?为什么不把 [Authorize] 属性放在表单的显示动作上呢?
-
我认为在某些情况下,他需要为授权用户和未授权用户显示表单。例如,在论坛中显示搜索框,但只有注册用户有权进行搜索。跨度>
-
我同意 Johannes Setiabudi 的观点。我认为尝试在整个身份验证过程中保留 POST 数据的想法是一个坏主意。 POST 应该是一个简单/轻松的过程有很多原因。将该进程拖出许多请求是一个坏主意。XSS 浮现在脑海中(更不用说其他会话/cookie 安全问题)。 @Marwan:另外,恕我直言,“搜索框”是一个不好的例子-如果用户无权搜索,则不应将搜索表单呈现到页面。 Html 助手非常适合有条件地呈现授权的 UI 元素。
标签: asp.net-mvc post attributes authorize