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());

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

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

格式:[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”,确定保存后。在“网站”中点击网站“重新启动”。

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

时间: 2024-08-25 00:00:04

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

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

创建角色管理相关视图 1.添加视图 打开RolesAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会弹出对话框  什么也不用改 直接“确定”. 2.在创建的视图上添加数据模型 在第一行添加 @model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityRole> 3.建立Index页面视图模板,代码完成后如下: 1 @mod

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

创建用户管理相关视图 1.添加视图 打开UsersAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会弹出对话框  什么也不用改 直接“添加”. 2.在创建的视图上添加数据模型 在第一行添加 @model IEnumerable<xxxx(项目名).Models .ApplicationUser>. 3.建立Index页面视图模板,代码完成后如下: 1 @model IEnumerable<xx

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

按照ASP.NET MVC Identity建立了一個用戶權限管理模塊,由于還要加自己已有的數據庫,所以建立了一個實體模型,建立了之后,發現登錄不了: 一直顯示"Login in failed for user 'sa',後來發現不是用戶名和密碼不對,而是連接字符串的問題,按屬性里複製的連接字符串沒有包括Initial Catalog=MISWeb, 所以有時正常,有時提示登錄錯誤. 多個連接字符串ConnectionString可以同時存在.包括同一服務器,同一用戶名,同一數據庫.

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

1.ASP.NET MVC 3 如何去除默认验证 这个默认验证是在web.config配置文件中设置的    <add key="ClientValidationEnabled" value="true"/>设置为false就行了,    这个是去掉所有model的默认验证,然后你可以在model中加上自己的验证,这样哪些属性需要验证,哪些不需要 就看你自己了 示例代码: publicclass Movie{publicint ID { get; set

ASP.NET MVC Identity 添加角色

using Microsoft.AspNet.Identity; public ActionResult AddRole(String name){ using (var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new IdentityDbContext()))) { if (!roleManager.RoleExists(name)) { roleManager.Create(

ASP.NET MVC Identity 使用自己的SQL Server数据库

之前在网上看到的一篇后来找不到了,现在自己记录一下. 1.在web.config中添加一个数据库连接. <add name="dataContext" connectionString="Data Source=.;Initial Catalog=MVC1;User ID=XXX;password=XXX" providerName="System.Data.SqlClient" /> 2.打开IdentityModels.cs文件,

应用程序框架实战三十:表现层及ASP.NET MVC介绍(一)

本文将介绍表现层及ASP.NET MVC的一些要点,特别是ASP.NET MVC的一些抽象和封装技巧,如果你对MVC还不了解,可以参考<ASP.NET MVC4 高级编程>,作者Jon Galloway等,这本书由ASP.NET MVC团队成员编写,相当不错. 表现层的职责 表现层的职责是展示和收集数据,将领域层的数据和逻辑展示出来,并收集用户输入的相关信息. 搞清楚表现层的职责以后,你就应该清楚,表现层不是你应该编写业务逻辑的地方,这也是分层架构的核心. 如果要展示一个计算值,不应该在表现层

[ASP.NET MVC] 使用CLK.AspNet.Identity提供以角色为基础的访问控制(RBAC)

[ASP.NET MVC] 使用CLK.AspNet.Identity提供以角色为基础的访问控制(RBAC) 程序代码下载 程序代码下载:点此下载 前言 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授权机制.而在ASP.NET Identity的功能模块中:是采用Claims-Based验证来提供验证机制.并且实作Role-Based授权来提供授权机制.开发人员在系统内套用ASP.NET Identity后,就可以像下列范例一样定义用户属于哪个角色.哪个

[ASP.NET MVC] ASP.NET Identity登入技术剖析

[ASP.NET MVC] ASP.NET Identity登入技术剖析 前言 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授权等等机制.本篇文章介绍ASP.NET Identity在执行登入功能时,与浏览器.还有第三方验证服务之间的运作流程.主要为自己留个纪录,也希望能帮助到有需要的开发人员.(本篇内容大幅度简化了ASP.NET Identity的运作细节,用以传达登入功能的运作概念.实际ASP.NET Identity在运作的时候,比本篇说明的复杂很