我有以下情况:
[AuthorizeAttribute]
LayoutView
设置。如果他们经过身份验证,那么整个childView
(由'公共'操作显示)将嵌入到主布局页面中,该页面显示登录用户的菜单等。匿名用户拥有没有菜单,只有纯childview
页。我的问题:
我能想到的唯一解决方案是引入另一个控制器/动作,它们调用与当前BLL逻辑相同的BLL逻辑,但对它们有[AuthorizedAttribute]
。但我想避免这样做,因为:
答案 0 :(得分:2)
如果要保留一个Url,则必须对匿名和经过身份验证的用户使用相同的控制器/操作。
您的问题是,当会话超时时,经过身份验证的用户会转向匿名用户并生成新的(匿名)会话。
您可以做些什么来区分真正的匿名用户和有时经过身份验证但现在匿名的用户,即向在您的应用中登录过一次的所有用户发送一个特殊的Cookie。
当这样经过身份验证的用户超时时,浏览器会将cookie发送到您的服务器,您可以将其重定向到登录页面。
真正的匿名用户浏览器不会发送该cookie,因此您只需显示该页面。