posts - 35,  comments - 4,  trackbacks - 1
公告
  2008年9月9日
posted @ 2008-09-09 18:17 啊凡 阅读(37) 评论(0) 编辑
一、人之所以痛苦,在于追求错误的东西。 
  二、与其说是别人让你痛苦,不如说自己的修养不够。 
  三、如果你不给自己烦恼,别人也永远不可能给你烦恼。因为你自己的内心,你放不下。
  四、好好的管教你自己,不要管别人。 
  五、不宽恕众生,不原谅众生,是苦了你自己。 
  六、别说别人可怜,自己更可怜,自己修行又如何?自己又懂得人生多少? 
  七、学佛是对自己的良心交待,不是做给别人看的。 
  八、福报不够的人,就会常常听到是非;福报够的人,从来就没听到过是非。 
  九、修行是点滴的工夫。 
  十、在顺境中修行,永远不能成佛。
  
  十一、你永远要感谢给你逆境的众生。
  十二、你随时要认命,因为你是人。
  十三、你永远要宽恕众生,不论他有多坏,甚至他伤害过你,你一定要放下,才能得到真正的快乐。
  十四、这个世界本来就是痛苦的,没有例外的。 
  十五、当你快乐时,你要想,这快乐不是永恒的。当你痛苦时你要想这痛苦也不是永恒的。
  十六、认识自己,降伏自己,改变自己,才能改变别人。
  十七、今日的执著,会造成明日的后悔。
  十八、你可以拥有爱,但不要执著,因为分离是必然的。
  十九、不要浪费你的生命在你一定会后悔的地方上。
  二十、你什么时候放下,什么时候就没有烦
  
  二一、内心没有分别心,就是真正的苦行。
  二二、学佛第一个观念,永远不去看众生的过错。你看众生的过错,你永远污染你自己,你根本不可能修行。
  二三、你每天若看见众生的过失和是非,你就要赶快去忏悔,这就是修行
  二四、业障深重的人,一天到晚都在看别人的过失与缺点,真正修行的人,从不会去看别人的过失与缺点。
  二五、每一种创伤,都是一种成熟。
  二六、当你知道迷惑时,并不可怜, 当你不知道迷惑时,才是最可怜的。
  二七、狂妄的人有救,自卑的人没有救。
  二八、你不要一直不满人家,你应该一直检讨自己才对。不满人家,是苦了你自己。
  二九、一切恶法,本是虚妄的,你不要太自卑你自己。一切善法,也是虚妄的,你也不要太狂妄你自己。
  三十、当你烦恼的时候,你就要告诉你自己,这一切都是假的,你烦恼什么?  
  
  三一、当你未学佛的时候,你看什么都不顺。当你学佛以后,你要看什么都很顺。
  三二、你要包容那些意见跟你不同的人,这样子日子比较好过。你要是一直想改变他,那样子你会很痛苦。要学学怎样忍受他才是。你要学学怎样包容他才是。
  三三、承认自己的伟大,就是认同自己的愚疑。
  三四、修行就是修正自己错误的观念。
  三五、医生难医命终之人,佛陀难渡无缘的众生。
  三六、一个人如果不能从内心去原谅别人,那他就永远不会心安理得。
  三七、心中装满着自己的看法与想法的人,永远听不见别人的心声。
  三八、毁灭人只要一句话,培植一个人却要千句话,请你多口下留情。
  三九、当你劝告别人时,若不顾及别人的自尊心,那么再好的言语都没有用的。
  四十、不要在你的智慧中夹杂着傲慢。不要使你的谦虚心缺乏智慧 。
  
  四一、根本不必回头去看咒骂你的人是谁?如果有一条疯狗咬你一口,难道你也要趴下去反咬他一口吗?
  四二、忌妒别人,不会给自己增加任何的好处。忌妒别人,也不可能减少别人的成就。
  四三、永远不要浪费你的一分一秒,去想任何你不喜欢的人。
  四四、多少人要离开这个世间时,都会说出同一句话,这世界真是无奈与凄凉啊!
  四五、恋爱不是慈善事业,不能随便施舍的。感情是没有公式,没有原则,没有道理可循的。可是人们至死都还在执著与追求。
  四六、请你用慈悲心和温和的态度,把你的不满与委屈说出来,别人就容易接受。
  四七、创造机会的人是勇者。等待机会的人是愚者。
  四八、能说不能行,不是真智慧。
  四九、多用心去倾听别人怎么说,不要急着表达你自己的看法。
  五十、同样的瓶子,你为什么要装毒药呢?同样的心理,你为什么要充满着烦恼呢?
  
  五一、得不到的东西,我们会一直以为他是美好的,那是因为你对他了解太少,没有时间与他相处在一起。当有一天,你深入了解后,你会发现原不是你想像中的那么美好。
  五二、这个世间只有圆滑,没有圆满的。
  五三、修行要有耐性,要能甘于淡泊,乐于寂寞。
  五四、活着一天,就是有福气,就该珍惜。当我哭泣我没有鞋子穿的时候,我发现有人却没有脚。
  五五、多一分心力去注意别人,就少一分心力反省自己,你懂吗?
  五六、眼睛不要老是睁得那么大,我且问你,百年以后,那一样是你的。
  五七、欲知世上刀兵劫,但听屠门夜半声。不要光埋怨自己多病,灾祸横生,多看看横死在你刀下的众生又有多少?
  五八、憎恨别人对自己是一种很大的损失。
  五九、每一个人都拥有生命,但并非每个人都懂得生命,乃至于珍惜生命。不了解生命的人,生命对他来说,是一种惩罚。
  六十、自以为拥有财富的人,其实是被财富所拥有。
posted @ 2008-09-09 17:48 啊凡 阅读(83) 评论(3) 编辑

转摘于:http://blog.csdn.net/lne818/archive/2006/09/03/1173743.aspx

 

asp.net 2.0 用户管理功能结构

 

摘要:在.NET 2.0中,引入了Provider模式后,大大了提高了框架本身的可扩展性。以MembershipRolesProfile组成的用户管理组件(包括页面个性化信息)就是以这种模式为核心构建起来的,在asp.net 2.0中,利用系统提供的API可以很容易的实现用户管理,角色管理,用户个性化信息的管理。这也是asp.net 2.0的一个重要组成部分,学习使用asp.net 2.0可以考虑从它入手。

基本结构

用户管理的三个组件是相互关联的,而且在数据设计上也是做了非常严格的数据约束。一个数据库可以存放多个系统的用户,以便用户的统一管理,每个用户都有一个ApplicationId字段来标识它是属于哪个系统的用户。

 

如上图所示,表与表之前看似有着极其复杂的关联关系。先来理清一下各个表的作用吧:

1 aspnet_Application :用来保存系统名的,每一个不同的系统名都会生成一个唯一的ID,这个ID是与其它关联关系的外键。

2 aspnet_Users :用户表,但是它只保存了用户ID基本不会变的信息,并且会有一个Uniqueidentifier类型的字段UserId来作为每个用户的唯一标识(并且是主键),以方便与其它表的关联。值得注意的是还有一个ApplicationId字段,通过这个字段与aspnet_Application进行关联,以此来将区分用户是属于哪个系统的。由于UserName字段本身并不是主键,所以它是可以有重复值的,但不是说一个系统允许存在相同的用户名。正是ApplicationId字段来标识相同的用户名是属于不同的系统的。ApplicationId字段的作用就在于此,所以你可以看到很多表中都有这个字段的存在。

3 aspnet_Membership :保存着用户的一些可变(不可变)的基本信息。

字段         

       作用 

ApplicationId

标识用户属于哪个系统      

UserId

与aspnet_Users关联的字段

Password 

加密或未加密的密码

PasswordFormat

指示密码的存储格式(明文或使用的加密码算法) 

PasswordSalt

用于辅助密码验证的字段(不可逆算法进行密码验证时所需)

MobilePIN

手机PIN码,同样可以唯一标

Email

Email (可配置Email是否必须唯一) 

LoweredEmail

小写的Email

PasswordQuestion

密码安全问题(可配置是否必须)

PasswordAnswer

密码安全问题答案

IsApproved

用户是否已认证(为0时用户无法登录)

IsLockedOut

用户是否已锁定(可配置密码重试次数,超过则自动锁定该用户)

CreateDate

创建时间

LastLoginDate

最后登录时间

LastPasswordChangedDate

最后修改密码的时间

LastLockoutDate

最后被锁定的时间

FailedPasswordAttemptCount

密码重试次数

FailedPasswordAttemptWindowStart

密码失败尝试窗口打开 时间

FailedPasswordAnswerAttemptCount

安全密码重试次数

FailedPasswordAnswerAttemptWindowStart

类同FailedPasswordAttemptWindowStart

Comment

其它自定义信息

从这些可以看到,在aspnet_Membership表存储着一些用户的公共属性信息。根本不同的需求的,我们可能还需要其它的一些自定义字段,在这种情况下最好不要直接修改这个表,而是应该新建一个表,或利用Profile功能来实现。

4. aspnet_Profile :存储着用户的一些个性化信息。由于个性化信息的字段是可变的,所以它采用了一种比较灵活的存储方式,类似于:property1:value1;property2:value2的形式(具体分隔符可能有误)来存储多个可变的属性值。再通过解析,分解出正确属性和值。

5. aspnet_Roles :存储系统的所以有角色,同样用ApplicationId来标识该角色属于哪个系统所有的。

6. aspnet_UsersInRoles :多对多的关系表,存储哪些用户属于哪些角色。

7. Aspnet_Paths,aspnet_PersonalizationPerUser,aspnet_PersonalizationAllUsers:这几个表组合起来存储个性化页面设置,配合WebPart使用。

二、如何注册所需的数据库及存储过程

了解了数据库结构后,接下来要解决的是就是如何创建这样一个数据库了。我们不可能手工的去创建这些表和存储过程的,当然后去手工去运行一段SQL语句也不是有点麻烦的。不用担心,.NET 2.0中已经提供相关的工具来注册这样一个数据库了,运行.NET命令行窗口,运行aspnet_regsql命令,会出现向导窗口。一段解析性提示进入下一步:

 

两个选项分别为配置aspnet数据库和删除已配置的aspnet数据库,进入下一步后:

 

输入所需的数据库验证信息,在Database字段处需要注意:如果有选择已有的数据库,那这些表和存储过程将被创建到已有的数据库中;如果输入不存在的数据库名,那么将会创建一个新的数据库,存放这些表和存储过程,默认数据名为aspnetdb。再两步以后就会完成了数据库的注册了。

BTWaspnet_regsql 命令还可以做很多事,可以参考MSDN得到更多的帮助。

三、配置文件的支持。

Provider模式非常依赖配置文件支持,实际上它是创建型设计模式的一种很直接的应用。由于框架内部调用都是抽象类型的接口,所以要给通过配置文件给这些抽象类提供具体的实现类,并配置一些所需的参数。在asp.net 2.0web.config文件中,提供了对这些配置的直接支持,并且还可以很容易的进行扩展。

四、接口支持。

继承了.NET 框架的优良传统,整个的Membership,Roles,Profile等功能都提供了非常简单的API供开发人员调用,Membership,Roles都被封装成静态类,并且重载了非常多的方法重载,以方便调用。而Profile更是在VS 2005 IDE的帮助下,可以动态生成类型定义,支持设计时的属性调用。

 

 

 

 

用户数据库就是由这些表组成的,理解了数据库的结构后,再来看待整个asp.net 2.0用户管理功能就会有比较清晰的认识了。另外两个表与用户管理没有直接关系的:aspnet_WebEvent_Events,用于记录系统在运行过程中去现的一些异常信息,需配合Health monitor使用;aspnet_SchemaVersions用于记录当前的框架版本信息,默认已经有记录了。

posted @ 2008-09-09 17:36 啊凡 阅读(54) 评论(0) 编辑