我一直在四处寻找,我找不到我想要的东西,或者它可能比我想象的更复杂,这就是我要问的原因。
就像我在_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)
为真,而实际上,我的会话是完全空的。
有没有办法将MVC身份验证与Session对象链接起来,或者至少在session["username"]
为空时强行退出?
答案 0 :(得分:-1)
我不知道为什么我不能早点想到它:
@if (Session["username"] != null)
{
<li>
<a>@Html.Label("Hello " + Session["username"].ToString() + " !")</a>
</li>
<li><a href="javascript:document.getElementById('logoutForm').submit()">Disconnect</a></li>
}
else
{
<li>@Html.ActionLink("Connect", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
}
只需删除Request.IsAuthenticated
并直接使用会话对象,如果它是空的,您不希望幽灵用户(空会话用户)能够绕过该网站。