当前位置: 首页 > news >正文

Asp.Net MVC4系列---基础篇(4)

Asp.Net Mvc 4系列---基础篇(4)

 

 

这一篇总结一下如何在MVC中应用自带的User Management 以及对controller 或action做简单的保护。

 

新建一个项目

 


由于生成的EF是5.0,所以用package  manager再 安装一下,升级到最新,为了确保project文件引用是一致的版本

 

安装一下Provider , 在User Management会用到

 

 把以下配置加在web.config 里

 

  

  <profiledefaultProvider="DefaultProfileProvider">
     <providers>
       <add name="DefaultProfileProvider"
type="System.Web.Providers.DefaultProfileProvider,System.Web.Providers,
Version=1.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35"
connectionStringName="DefaultConnection"applicationName="/" />
     </providers>
   </profile>
   <membership defaultProvider="DefaultMembershipProvider">
     <providers>
       <add name="DefaultMembershipProvider"
type="System.Web.Providers.DefaultMembershipProvider,System.Web.Providers,
Version=1.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35"
connectionStringName="DefaultConnection"enablePasswordRetrieval="false"
enablePasswordReset="true"requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"applicationName="/" />
     </providers>
   </membership>
   <roleManager defaultProvider="DefaultRoleProvider"enabled="true">
     <providers>
       <add name="DefaultRoleProvider"
type="System.Web.Providers.DefaultRoleProvider,System.Web.Providers,
Version=1.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35"
connectionStringName="DefaultConnection"applicationName="/" />
      </providers>
</roleManager>

注意要把RoleManeger节点的enable设为true

 

 

开启migration

 

打开生成的configuration文件

 

 

 

完成以下代码(红色部分为新加):

 

 

namespace MvcAuthorization.Migrations
{
   using System;
   using System.Data.Entity;
   using System.Data.Entity.Migrations;
   using System.Linq;
   using System.Web.Security;
 
   internal sealed class Configuration :DbMigrationsConfiguration<MvcAuthorization.Models.UsersContext>
    {
       public Configuration()
       {
            AutomaticMigrationsEnabled = true;
       }
 
       protected override void Seed(MvcAuthorization.Models.UsersContextcontext)
       {
           if(!Roles.RoleExists("Admin"))
               Roles.CreateRole("Admin");
            if(Membership.GetUser("teacher") == null)
               Membership.CreateUser("teacher", "123456");
            if(!Roles.IsUserInRole("Admin","teacher"))
               Roles.AddUserToRole("teacher","Admin");
 
           //  This method will be calledafter migrating to the latest version.
 
           //  You can use theDbSet<T>.AddOrUpdate() helper extension method
           //  to avoid creating duplicateseed data. E.g.
           //
           //    context.People.AddOrUpdate(
           //      p => p.FullName,
           //      new Person { FullName ="Andrew Peters" },
           //      new Person { FullName ="Brice Lambson" },
           //      new Person { FullName ="Rowan Miller" }
           //    );
           //
       }
    }
}


执行Update database,目的:和数据库的表结构同步,并运行刚才写的逻辑。

 

 

看到数据库的变化,刚才的逻辑已经生效了。每次同步数据库,Seed函数都会被调用。

 


 

 

 

下一步,添加一个controller

 

加上一个attribute,对这个action进行保护(也可以加在controller上,对整个controller做访问限制)


试图在浏览器访问这个action ,发现会重定向到登陆页面



登陆后就可以调用这个controller了 :

 

 

相关文章:

  • IE8 正式版官方下载链接
  • IE8 视频
  • [Web开发] 快速修复网页在IE8 下的显示兼容问题
  • 用手机连pc localhost 学习,调试网站
  • [Web开发] Web开发者必读:《IE8 开发技术概述》
  • Web Server IIS Asp.Net Http Module 不工作
  • SqlServer中decimal(numeric )、float 和 real 数据类型的区别
  • 说说“315曝光中移动”的“阴谋论”
  • 网络管理的重要原则
  • 查找一个server下还有某个表名的数据库名字...
  • TD座机:我的憧憬和忧虑
  • 使用Watin做Web UI Automation Test
  • Linux常用命令学习笔记
  • [IE技巧] 如何关闭Windows Server版IE的安全限制
  • Asp.Net MVC4 系列-- 进阶篇之路由(1)
  • python3.6+scrapy+mysql 爬虫实战
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • CAP理论的例子讲解
  • HTTP中的ETag在移动客户端的应用
  • js对象的深浅拷贝
  • leetcode98. Validate Binary Search Tree
  • linux安装openssl、swoole等扩展的具体步骤
  • Promise初体验
  • Vue 重置组件到初始状态
  • vue总结
  • 闭包--闭包之tab栏切换(四)
  • 机器学习学习笔记一
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 模型微调
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #git 撤消对文件的更改
  • #include
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $.ajax()参数及用法
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)球球大作战
  • (ibm)Java 语言的 XPath API
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .gitignore
  • .jks文件(JAVA KeyStore)
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net 高效开发之不可错过的实用工具
  • /etc/sudoer文件配置简析
  • @SentinelResource详解
  • [ IO.File ] FileSystemWatcher
  • [20181219]script使用小技巧.txt
  • [APIO2012] 派遣 dispatching
  • [BZOJ 3680]吊打XXX(模拟退火)