一、添加管理链接

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

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

温馨提示:为了确保网站的安全建议大家在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”,确定保存后。在“网站”中点击网站“重新启动”。

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

Asp.Net MVC Identity 2.2.1 使用技巧(八)的更多相关文章

  1. Asp.Net MVC Identity 2.2.1 使用技巧(二)

    之前我们看到了新生成的项目中跟identity有关的有四个文件,这些文件是基础功能,并未开启identity的全部功能.现在我们先启用角色功能. 1.在App_Start文件夹中的IdentityCo ...

  2. Asp.Net MVC Identity 2.2.1 使用技巧(一)

    开发环境:vs2015 UP3  or  vs2017RC  项目环境:asp.net 4.6.1   identity版本为:asp.net identity 2.2.1 1.创建项目. 没什么好说 ...

  3. Asp.Net MVC Identity 2.2.1 使用技巧(七)

    创建角色管理相关视图 1.添加视图 打开RolesAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会弹出 ...

  4. Asp.Net MVC Identity 2.2.1 使用技巧(六)

    使用用户管理器之角色管理 一.建立模型,这里我们其实在之前的技巧(五)已经建好了. 二.建立控制器RolesAdminController 1.在controllers文件夹上点右键>添加> ...

  5. Asp.Net MVC Identity 2.2.1 使用技巧(五)

    创建用户管理相关视图 1.添加视图 打开UsersAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会弹出 ...

  6. Asp.Net MVC Identity 2.2.1 使用技巧(四)

    使用用户管理器之用户管理 一.建立模型 1.在Models文件夹上点右键 >添加>类     类的名称自定,我用AdminViewModels命名的. 2.更改模板自建的AdminView ...

  7. Asp.Net MVC Identity 2.2.1 使用技巧(三)

    使用用户管理器之用户注册 用户管理的基本功能模块中已经做好了,我们现在做一些调整. 1.修改用户名注册规则. 上一篇中可选操作已经详解了这里把基本的设置简介下. 打开App_Start/identit ...

  8. ASP.NET MVC Identity 兩個多個連接字符串問題解決一例

    按照ASP.NET MVC Identity建立了一個用戶權限管理模塊,由于還要加自己已有的數據庫,所以建立了一個實體模型,建立了之后,發現登錄不了: 一直顯示“Login in failed for ...

  9. ASP.NET MVC 3 入门级常用设置、技巧和报错

    1.ASP.NET MVC 3 如何去除默认验证 这个默认验证是在web.config配置文件中设置的    <add key="ClientValidationEnabled&quo ...

随机推荐

  1. JAVA泛型——逆变

    在上篇<JAVA泛型——协变>这篇文章中遗留以下问题——协变不能解决将子类型添加到父类型的泛型列表中.本篇将用逆变来解决这个问题. 实验准备 我们首先增加以下方法,见代码清单1所示. 代码 ...

  2. IOS9网络请求报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    今天下载Xcode7试了下,运行项目时报上面的错误,网上查了下原来iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (A ...

  3. WebUtility(提供在处理 Web 请求时用于编码和解码 URL 的方法。)

    public static string UrlEncode( string str ) UrlEncode(String) 方法可用来编码整个 URL,包括查询字符串值. 如果没有编码情况下,如空格 ...

  4. anaconda使用,jupyter notebook的使用方法

    1. 通过anaconda安装不同的python环境 1) conda create -n python36 python=3.5 2)  激活虚拟环境: activate python36  # 进 ...

  5. Linux多进程之间的文件锁

    之前对于文件的操作通常在一个进程中完成,最近需要在两个进程中对同一个文件进行操作.故想到了文件锁. Linux下可以使用flock()函数对文件进行加锁解锁等操作.简单介绍下flock()函数: 表头 ...

  6. [linux] shell脚本编程-xunsearch安装脚本学习

    安装脚本setup.sh #!/bin/sh # FULL fast install/upgrade script # See help message via `--help' # $Id$ # s ...

  7. 十三、curator recipes之SharedCounter

    简介 我们可以通过curator实现对一个分布式环境下共享变量的访问,zookeeper将共享变量维护在同一个路径下. 官方文档:http://curator.apache.org/curator-r ...

  8. 读写csv文件——考虑各种异常场景,源码

    CSV是以逗号间隔的文本文件,其文件以纯文本形式存储表格数据(数字和文本).在JAVA中可以通过输出文件流的方式将数据写入CSV文件,通过BufferedReader类去读该路径中的文件,使用read ...

  9. 高性能分布式锁-redisson的使用

    1,概述:在一些高并发的场景中,比如秒杀,抢票,抢购这些场景,都存在对核心资源,商品库存的争夺,控制不好,库存数量可能被减少到负数,出现超卖的情况,或者 产生唯一的一个递增ID,由于web应用部署在多 ...

  10. Centos的一个find命令配合rm删除某天前的文件

    语句写法:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前带 ...