zoukankan      html  css  js  c++  java
  • Asp.Net MVC Identity 2.2.1 使用技巧(八)

    一、添加管理链接

    在View/Shared/_layout.cshtml,在页面导航上(28行)添加如下代码:

    1                     @*通过身份验证并确认用户属于Admin角色显示管理菜单*@
    2                     @if (Request.IsAuthenticated && User.IsInRole("Admin"))
    3                     {
    4                         <li>@Html.ActionLink("角色管理", "Index", "RolesAdmin")</li>
    5                         <li>@Html.ActionLink("用户管理", "Index", "UsersAdmin")</li>
    6                     }

    温馨提示:为了确保网站的安全建议大家在App_Start文件夹中的FilterConfig.cs的public static void RegisterGlobalFilters(GlobalFilterCollection filters)方法内再加上一句
                 filters.Add(new System.Web.Mvc.AuthorizeAttribute());

    为了方便大家学习,我把前面讲的对应修改和新建的文件压缩上传了,有需要的朋友请这里下载。另外附上最新版2017rc版本,(此下载为vs2017rc.4+26206.0专用仅using有区别

    二、简单讲下操作的权限分配。

    通过下面这些权限的组合,你可以得到你希望的权限管理。

    格式:[Authorize(allow users = “xxx” )]

    allow users = “xxx” 允许用户xxx访问

    allow roles="Admin" 允许角色Admin访问

    [AllowAnonymous] 允许匿名用户访问

    deny users="yyy" 拒绝用户yyy访问

    deny roles="youke" 拒绝角色youke访问

    deny users="?" 拒绝匿名用户访问

    三、发布网站时的选项

    Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

    Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。      

    databases

    use this connection string at runtime   在运行时使用此连接字符串  它的作用是部署到生产的时候这里的连接字符串优先于appsettings.json的  主要是方便程序迭代时的部署工作。一般来说就是,开发环境和生产环境没在同一个地址上,这里可以很方便的修改对应的地址。举例说明就是  开发和测试为192.168.1.1   生产为192.168.1.2   你发布时不在需要更改appsettings.json的连接串(192.168.1.1),修改这里为192.168.1.2就可以完成部署程序的连接地址。

    entity framework migrations

    apply this migration on publish   将此迁移应用于发布   它的作用是在程序部署时自动同步数据库结构的。添加了新表,表的字段有变化时它会更新这些变化。一般来说,这两个连接的字符串都是一样的。主要是方便程序迭代时的数据库更新的工作。

    另外就是 core的程序是跨平台的,为适应这一变化,sql连接现在不允许windows身份连接了,必须用sa和密码,理由很简单其他系统怎么会有win身份验证。

     

    四、关于iis8.5中发布的网站无法连接数据库的解决方案。

    发布网站到服务器的iis中在浏览时出现如下提示:

    “/”应用程序中的服务器错误。


    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 50 - 发生了 Local Database Runtime 错误。无法创建自动实例。有关错误详细信息,请参阅 Windows 应用程序事件日志。 )

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。             
    异常详细信息: System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 50 - 发生了 Local Database Runtime 错误。无法创建自动实例。有关错误详细信息,请参阅 Windows 应用程序事件日志。 )
    源错误:

    执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 

    堆栈跟踪:

    [SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 50 - 发生了 Local Database Runtime 错误。无法创建自动实例。有关错误详细信息,请参阅 Windows 应用程序事件日志。
    )]
    

     一开始没明白为什么出现这种原因,从sqlserver中寻找了半天,无果。

    仔细研究后感觉应该是iis的问题。仔细检查后发现问题所在。

    解决方案:

    1.打开iis管理器。

    2.打开“应用程序池”并左键单击对应的网站应用程序池。

    3.在右侧的“编辑应用程序池”里找到“高级设置”

    4.在“高级设置”对话窗口中找到“进程模型”中的“加载用户配置文件”

    5.将“加载用户配置文件”由“False”改为“True”,确定保存后。在“网站”中点击网站“重新启动”。

    再次浏览网站,问题解决。

  • 相关阅读:
    Linux02--文件系统与磁盘管理
    Android02-Activity01
    Android01-概述
    LeetCode | Binary Tree Level Order Traversal II
    LeetCode | Binary Tree Level Order Traversal
    LeetCode | Binary Tree Postorder Traversal
    LeetCode | Binary Tree Inorder Traversal
    LeetCode | Binary Tree Preorder Traversal
    LeetCode | Symmetric Tree
    LeetCode | Balanced Binary Tree
  • 原文地址:https://www.cnblogs.com/chonghanyu/p/6392199.html
Copyright © 2011-2022 走看看