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了 :
相關文章
- Asp.Net MVC4 系列--基礎篇(1)ASP.NETMVC
- Asp.Net MVC4系列---基礎篇(5)ASP.NETMVC
- Asp.Net MVC4系列--進階篇之AJAXASP.NETMVC
- Asp.Net MVC4 系列--進階篇之ViewASP.NETMVCView
- Asp.Net MVC4 系列--進階篇之Model(1)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Model(2)ASP.NETMVC
- Asp.Net MVC4 系列-- 進階篇之路由(1)ASP.NETMVC路由
- Asp.Net MVC4 系列--進階篇之路由 (2)ASP.NETMVC路由
- Asp.Net MVC4系列--進階篇之Helper(1)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Helper(2)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Controller(2)ASP.NETMVCController
- Asp.Net MVC 系列--基礎篇(2)ASP.NETMVC
- Asp.Net MVC系列--基礎篇(3)ASP.NETMVC
- to debug asp.net mvc4ASP.NETMVC
- ASP.NET MVC4 入門簡介ASP.NETMVC
- ASP.NET MVC4 亂七八糟羅列ASP.NETMVC
- Asp.Net MVC4 + Oracle + EasyUI 學習 序章ASP.NETMVCOracleUI
- vue系列基礎篇(一)Vue
- Using NInject Do DI(3) In Asp.net MVC4ASP.NETMVC
- webpack4之基礎篇Web
- ASP.NET MVC4 捆綁(Bundle)技術下的 JavaScriptASP.NETMVCJavaScript
- ASP.NET MVC4中呼叫WEB API的四個方法ASP.NETMVCWebAPI
- Asp.Net MVC4 + Oracle + EasyUI 學習 第二章ASP.NETMVCOracleUI
- PHP DIY 系列------基礎篇:3. 反射PHP反射
- Asp.Net MVC4 + Oracle + EasyUI 學習 第一章ASP.NETMVCOracleUI
- 4、JavaScript進階篇①——基礎語法JavaScript
- ASP.NET MVC4中用 BundleCollection使用問題手記ASP.NETMVC
- PHP DIY 系列------基礎篇:2. ComposerPHP
- PHP DIY 系列------基礎篇:1. PSRPHP
- WebSocket系列之基礎知識入門篇Web
- Webpack4系列教程(一) 基礎入門Web
- iOS動畫系列之四:基礎動畫之平移篇iOS動畫
- Webpack系列-第一篇基礎雜記Web
- .Net Core 微服務容器系列基礎目錄篇微服務
- Dagger 2 系列(二) -- 基礎篇:@Inject、@Component
- Dagger 2 系列(四) -- 基礎篇:@Named 和 @Qualifier
- 夯實Java基礎系列1:Java物件導向三大特性(基礎篇)Java物件
- 基礎篇