Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 5 如何检查用户是否从MVC5布局文件登录_Asp.net Mvc 5 - Fatal编程技术网

Asp.net mvc 5 如何检查用户是否从MVC5布局文件登录

Asp.net mvc 5 如何检查用户是否从MVC5布局文件登录,asp.net-mvc-5,Asp.net Mvc 5,我有一个MVC5站点,使用共享的布局视图。 在这个布局视图中,我在主体之后的底部渲染脚本 @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryui") @*BootStrap must be loaded after JQuery UI in order to override the tooltip function*@ @Scripts.Render("~/bundles/b

我有一个MVC5站点,使用共享的布局视图。 在这个布局视图中,我在主体之后的底部渲染脚本

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryui")
    @*BootStrap must be loaded after JQuery UI in order to override the tooltip function*@
    @Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/bundles/jqueryval")
    @Scripts.Render("~/bundles/Session")
我现在的问题是,除了登录页面之外,我希望在每个页面中都包含会话包。 换句话说,我只想将会话包用于用户已登录且具有活动会话的页面

如何在我的布局视图中检查此条件并有条件地渲染脚本

在其他页面中,我会在我的模型中添加一个bool字段,然后使用C#If构造仅在true时渲染脚本部分,但我的#布局视图中没有模型

我还使用自定义的、非常简单的登录方法,因此我没有使用MVC5的身份框架

编辑 有人建议我使用Request对象

@if (Request.IsAuthenticated) { @Render...}
这不起作用,因为im使用自定义登录,这不适用于内置框架。 我在这里读到了这个领域的工作原理

问题仍未解决

我找到了答案

@if (Request.IsAuthenticated)
{
   // Render stuff for authenticated user
}

我可以从布局访问会话对象。使用它,我可以检查我的自定义身份验证对象是否为null。如果不为null,则表示用户已登录

@if (Session["BrugerSession"] != null)
{
    @Scripts.Render("~/bundles/Session")
}

Request.IsAuthenticated检查的依据是什么?它只是一个我必须在服务器端设置的bool字段,还是检查一些东西?它是内置的,假设您使用的是标准的ASP.NET身份验证机制(Windows身份验证、ASP.NET成员身份、标识等)。如果你不是,你应该是。滚动你自己的auth充其量是傻瓜哈代。那很快。找到这个,现在如果我登录(没有其他人可以登录),我的删除按钮就会出现。谢谢,伙计,不要自己验证。除非你是一名安全专家,即使你是,也有很多事情可能出错。信任现有的坚实框架。即使对于奇怪的边缘情况,也可以很容易地使用内置的东西,并去掉会话变量。不要使用它们编程,它们是邪恶的,会阻止您扩展网站,因为会话状态存储在本地计算机上。如果您使用云计算并希望进行扩展,则必须设置一个数据库来存储会话数据。ASP.NET标识声明可以在该会话变量中存储您想要的所有数据。更不用说您使用该会话变量使无状态协议(http)有状态(hateful:)。这不会检查用户是否经过身份验证。它检查会话中的变量。。。。