首页 > 一个用泛型隐式传递权限关键字的方法

一个用泛型隐式传递权限关键字的方法

最近和IBM在重新做公司的平台,其中涉及多租户问题,之前处理多租户数据隔离时考虑很简单,直接把权限关键字作为每个方法的参数传递给DAO。带来的问题是在编码过程中有部分同事经常会忘记添加,维护也有些麻烦,这次就想着将这个问题给处理掉。IBM给了一个方案,可以将权限关键字写入当前执行线程中,在DAO中再从线程中取出来,但这样限定了UI层跟DAO都只能使用同一个线程,虽然暂时不会有UI层跟DAO线程不一样的情况,但总感觉有些不舒服。之前也一直在考虑是否可以通过一个公共方法来调用DAO,在公共方法中设置权限关键字,但都没有仔细的去想,今天在整理文档时突然想到用泛型不就能完美的解决这个问题么,于是就小实现了一下,是完全可以的。以下列出关键代码。

 

 DAO部分

 

public interface IData

    {

        UserInfo MyUserInfo { getset; }

    }

 public class TestData : IData

    {

        public UserInfo MyUserInfo { getset; }



        public string TestMethod(string str)

        {

            return string.Format("Class:[TestData] Method:[TestMethod] User:[{0}] Result[{1}]", MyUserInfo.UserName, str);

        }

    }

 

在UI层建立一个代理,用于隐藏传递用户权限关键信息

 

public class Proxy

    {

        public static T GetIData() where T : DAL.IData, new()

        {

            var d = new T();

            //从Session获取UserInfo 并赋值给新创建的d

            d.MyUserInfo = (DAL.UserInfo)System.Web.HttpContext.Current.Session["UserInfo"];

            return d;

        }

    }

 

 

调用实例: 例如调用TestData.TestMethod
Proxy.GetIData().TestMethod("测试多租户");

 

转载于:https://www.cnblogs.com/vanjoge/archive/2012/07/23/2605338.html

更多相关:

  • 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?1、在Startup类中读取json配置文件1、使用Confi...

  •   1 public class FrameSubject extends JFrame {   2    3   …………..   4    5   //因为无法使用多重继承,这儿就只能使用对象组合的方式来引入一个   6    7   //java.util.Observerable对象了。   8    9   DateSub...

  • 本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码、快速的访问Web Api。 NSwagStudio 下载地址 比较强大、可以生成TypeScript、WebApi Controller、CSharp Client  1、运行WebApi项目  URL http://yourserver/swagger 然后...

  •   在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性.   ModelState 在ApiController中一个ModelState属性用来获取参数验证结果.   public abstract class ApiController : IHttpController,...

  • 1# 引用  C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.dll C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.Applicati...

  • setuid 和 setgid (全称分别是:set user ID upon execution 和 set group ID upon execution)是Unix的访问权限标志位,它允许 用户以可执行文件owner或group的权限来运行这个可执行文件。它们经常适用于:为了运行特定的任务,可以允许用户暂时的提高权限。用处: 暂...

  • 1. 权限管理命令:chmod 命令名称:chmod命令英文原意:change the permissions mode of a file命令所在路径:/bin/chmod执行权限:所有用户语法: chmod [{ugoa} {+-=} {rwx}] [文件或目录] [mode=421] [文件或目录]功能描述:改变文件或目录权限...

  • 权限系统通常包括如下基本元素:用户、角色、权限、资源、操作。 角色分类:总经理、部长、员工。(在实际中一个用户可能存在多个角色,这就要考虑到权限累加处理) 权限分类:如”员工考勤权限”、”审核权限”等等。 在给角色分配权限过程中,可以批量分配权限,也可以单一处理,比如网站首页,这就应该开放给所有角色,而审核考勤就只能给部分角色有开放...

  • 创建用户create user –概述:在oracle中要创建一个新的用户使用 create user 语句,一般是具有dba(数据库管理员)的权限才能使用。 –基本语法:create user 用户名 identified by 密码 create user dbuser1 identified by dbuser1;   用户赋权...

  • 本节讲解一下Windows下SVN权限配置说明,针对的是一个目录下多库的情况,下面是具体的介绍,希望通过本文的学习,你能够对SVN权限配置问题有更加深刻的认识。 1、本文档适用于对Subvesion的自带服务svnserve进行权限配置,全部在authz文件中完成。 2、如果要对含有中文的目录或文件进行管理或分配时,需要将该文件保存为...