zoukankan      html  css  js  c++  java
  • asp.net mvc利用mebership实现权限控制

    首先我需要说明开发环境:

    本文转自Zilchwei博客

    操作系统:windows xp sp3

    ide:vs2010中文版(内置asp.net mvc2.0中文版)

    数据库:sql server2008(vs2010内置)

    我们开始今天的例子:

    首先我们file->new一个工程:我将其命名为Mebership_MVC.

    然后 我们会在sql server 2008中新建一个数据库.本文转自Zilchwei博客

    这里我将其命名为:Text_DB

    然后 我们来到这里X:(系统盘)\WINDOWS\Microsoft.NET\Framework\v4.0.30319

    找到aspnet_regsql.exe并运行如下图本文转自Zilchwei博客

    直接下一步

    如图选择下一步

    配置连接 选择下一步然后再点一步直至完成.好了 我们看下我们的数据库  里面多了几个表本文转自Zilchwei博客

    现在数据库已经完成  我们回到我们新建的项目.这里需要配置项目.打开Web.config修改

    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
          providerName="System.Data.SqlClient" />

    修改后如下本文转自Zilchwei博客

    <add name="ApplicationServices"
             connectionString="data source=45D31BCE27E74BB\SQLEXPRESS;Initial Catalog=Text_DB;Persist Security Info=True;User ID=sa;Password=luowei1985"
          providerName="System.Data.SqlClient" />

    AccountController.cs这里已经为我们准备了完整的  登陆,注册,修改密码等方法.

    当然 我们还需要个性化一些东西.比如注册的内容  我们可以看到 在model文件夹下面有个AccountModels.cs类这里保存了很多方法 我们只需要修改这些方法就可以实现自己需要的个性化功能.

    我这里简单演示下怎么判断用户类型.我们在默认的HomeController下AboutAction上添加

    [Authorize(Roles="Admin")]
            public ActionResult About()
            {
                return View();
            }

    当我们访问这个action的时候会自动跳转到登陆页.本文转自Zilchwei博客

    我们注册一个用户admin登陆后依然不能访问我们的about依然提示我们需要登录.这里我们的目的已经达到了 我们需要个性化修改下我们的方法 使得我们可以添加角色为admin的用户

    当然 我们现在需要添加一个角色.我们添加一组action

    public ActionResult Cr()
            {
                return View();
            }
            [HttpPost]
            public ActionResult Cr(string rname)
            {
                MembershipService.CreateR(rname);
                return View();
            }

    这里我们需要自己定义一个CreateR的方法本文转自Zilchwei博客

    我们在AccountModels.cs中添加一个接口

     public interface IMembershipService
        {
            int MinPasswordLength { get; }

            bool ValidateUser(string userName, string password);
            MembershipCreateStatus CreateUser(string userName, string password, string email, string rname);//注意这里多了个参数
            bool ChangePassword(string userName, string oldPassword, string newPassword);


            void CreateR(string name);//这里是添加的
            
        }

    当然还要添加对应方法本文转自Zilchwei博客

    public class AccountMembershipService : IMembershipService
        {
            public void CreateR(string name)
            {
                Roles.CreateRole(name);
            }

    后面的代码我就不贴了  大家看这个主要的就可以了.这里

    我们还需要改下注册时候的接口和方法

    public MembershipCreateStatus CreateUser(string userName, string password, string email,string rname)
            {
                if (String.IsNullOrEmpty(userName)) throw new ArgumentException("值不能为 null 或为空。", "userName");
                if (String.IsNullOrEmpty(password)) throw new ArgumentException("值不能为 null 或为空。", "password");
                if (String.IsNullOrEmpty(email)) throw new ArgumentException("值不能为 null 或为空。", "email");

                MembershipCreateStatus status;
                _provider.CreateUser(userName, password, email, null, null, true, null, out status);
                Roles.AddUserToRole(userName, rname);
                return status;
            }

    好了 现在我们开始测试我们的项目.具体请看我给出的项目源代码本文转自Zilchwei博客

    https://files.cnblogs.com/ZilchWei/LinqToSqlModel%e9%aa%8c%e8%af%81.rar

  • 相关阅读:
    20101029总结
    编程感悟
    编程实现>ASP.NET 3.5开发范例精讲精析>探讨SqlDataSource控件
    GET代替POST?
    php调试工具安装
    php 命令行方式使用
    多为数组转换成一维递归
    mysql优化相关
    操作目录
    递归树
  • 原文地址:https://www.cnblogs.com/ZilchWei/p/1810297.html
Copyright © 2011-2022 走看看