【发布时间】:2017-03-21 08:33:19
【问题描述】:
我一直在环顾四周,但找不到我想要的确切内容,或者它比我想象的更复杂,这就是我问的原因。
就像我在 _LoginPartial.cshtml 中看到的那样:
@if (Request.IsAuthenticated)
{
@try
{
<li>
<a>@Html.Label("Hello " + Session["username"].ToString() + " !")</a>
</li>
<li><a href="javascript:document.getElementById('logoutForm').submit()">Disconnect</a></li>
}
catch (NullReferenceException)
{
<li>@Html.ActionLink("Connect", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
}
}
else
{
<li>@Html.ActionLink("Connect", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
}
有时,MVC 计算出 @if (Request.IsAuthenticated) 为真,而实际上,我的 Session 完全为空。
有没有办法将 MVC 身份验证与 Session 对象联系起来,或者至少,如果session["username"] 为空,则强制注销?
【问题讨论】:
-
所以我可以完全忽略 resquest.Authentication 并且只使用会话对象来满足我的需要
-
Session 与身份验证无关 - Request.IsAuthenticated 只是查看当前线程是否具有 Principle 对象。您如何验证您的用户?
-
感谢@TiesonT。正是您所说的回答了我的问题,Request.Authentication 与我想的真正的身份验证无关;它更像是“存在主要胎面”。所以我将使用 Session 来代替,这样我就可以自己处理显示和安全性。如果您关心接受答案,请在您的 cmets 中回答类似的内容,谢谢大家。
-
"...与真正的身份验证无关" - 嗯,什么? Session 只是存储状态的内存位置(除非您使用 Redis)。你有什么资格作为“真正的身份验证”?
标签: asp.net-mvc session razor