- 浏览: 670740 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
abao1:
老贾 在安装IDEA的过程中,在激活步骤时,按如下操作即可: ...
IntelliJ IDEA 2016注册方法和注册码 -
bo_hai:
./usr/bin/java: symbol lookup ...
jmagick安装步骤 -
wxcking:
不错的, 收藏一下
JAVA使用POI生成Excel文件 -
zgyfh:
大哥,密码是多少啊?zgyfh@tom.com谢谢了!新手学习 ...
WPF做的必备示例 -
记忆无泪:
jiasongmao 写道你的邮箱是多少,我可以发源代码到邮箱 ...
WPF做的必备示例
提供一个示例,演示如何用自定义成员资格提供程序来扩展 MembershipUser 类。 尽管用户 System.Web.Profile 提供了一种用于将每个用户的信息存储在 Web 应用程序中的方便机制,但应用程序的设计可能还要求将用户身份验证信息及其他用户信息存储在 Membership 数据存储区中。 在这种情况下,将需要生成一个自定义成员资格提供程序,以便在数据存储区中存储和检索用户身份验证信息和其他用户值(有关自定义成员资格提供程序的示例,请参见实现成员资格提供程序)。 此外,还可以扩展 MembershipUser 类,使添加的用户值可用于应用程序代码。 创建自定义成员资格用户包括下列任务: 创建一个继承 MembershipUser 类的类。 创建一个数据源以存储身份验证信息和其他用户设置。 为数据存储区创建一个自定义成员资格提供程序。 该自定义成员资格提供程序将包含其他代码,这些代码可以采用自定义成员资格用户类型的对象作为输入,并且返回自定义成员资格用户类型的对象。 本主题中的示例演示如何修改如何:演示成员资格提供程序实现中的自定义成员资格提供程序示例,以支持自定义成员资格用户实现。 可以创建一个自定义成员资格用户,方法是创建一个继承 MembershipUser 类的类,然后包括公开其他用户值的属性。 此外,还可以向 MembershipUser 类添加方法和事件。 调用 Membership 类以创建自定义 MembershipUser 的实例时,将只调用由 MembershipUser 类定义的构造函数。 如果 MembershipUser 实现包括其他构造函数重载,则这些构造函数只能由为调用自定义构造函数而专门编写的应用程序代码调用。 下面的代码示例演示一个继承 MembershipUser 类的简单自定义成员资格用户,并提供两个其他属性:IsSubscriber 和 CustomerID,前者是布尔属性,标识用户是否为 Web 应用程序订阅服务或新闻稿;后者包含单独客户数据库的唯一标识符。
有关修改 CreateUserWizard 控件以包括成员资格用户的其他用户信息的示例,请参见如何:自定义 ASP.NET CreateUserWizard 控件。 您将需要为成员资格功能的用户身份验证信息以及自定义成员资格用户的其他用户信息提供一个数据存储区。 下面的代码示例演示一个查询,您可以在 Microsoft Access 数据库中运行该查询,以创建一个要存储自定义成员资格用户的身份验证信息和属性值的表。
创建自定义成员资格提供程序
您将需要创建一个自定义成员资格提供程序,该提供程序支持自定义成员资格用户类型和自定义成员资格数据存储区。 可以编写自定义成员资格提供程序的 GetUser 和 CreateUser 方法,以返回自定义成员资格用户类型的对象。 可以编写自定义成员资格提供程序的 UpdateUser 方法,以采用自定义成员资格用户类型的对象作为输入。 下面几节提供有关创建一个使用自定义成员资格用户类型的自定义成员资格提供程序的指南。 示例以如何:演示成员资格提供程序实现中提供的代码为基础,并使用本主题前面为成员资格用户数据创建数据源部分提供的数据库架构。 使用自定义成员资格用户类型时,成员资格提供程序的 MembershipProvider..::..GetUser 和 MembershipProvider..::..GetUser 方法必须仍然返回 MembershipUser 类型的对象。 只要自定义成员资格用户类继承 MembershipUser 类,就会返回自定义成员资格用户类型的对象作为实现 GetUser 方法的返回值。 然后应用程序代码可以强制转换返回的 MembershipUser 作为自定义成员资格用户类型,以访问自定义成员资格用户的其他成员,如下面的代码示例所示。 下面的代码示例演示如何:演示成员资格提供程序实现中示例成员资格提供程序的修改后的 GetUser 方法(及其支持私有方法),这些方法已进行了更新,以便返回本主题前面创建自定义成员资格用户部分中的自定义成员资格用户类型。
使用自定义成员资格用户类型和自定义成员资格提供程序时,实现一种 UpdateUser 方法,该方法采用 MembershipUser 类型的对象作为输入。 在 UpdateUser 方法的实现中,将提供的MembershipUser 对象强制转换为自定义成员资格用户类型,以访问其他属性的值并在数据存储区中进行更新。 下面的代码示例演示如何:演示成员资格提供程序实现中示例成员资格提供程序的修改后的 UpdateUser 方法,该方法已进行了更新,以便将提供的用户强制转换为本主题前面创建自定义成员资格用户部分中的自定义成员资格用户类型。
使用自定义成员资格用户类型和自定义成员资格提供程序时,该自定义成员资格提供程序必须实现 CreateUser 方法,该方法仅采用 MembershipUser 类支持的属性作为输入。 可以创建采用其他属性值的 CreateUser 方法的重载,如下面的代码示例所示。 但是,Membership 类或依赖 Membership 类的控件(如 CreateUserWizard 控件)不会调用此重载。 若要从应用程序调用此方法,请将 Membership 类引用的 MembershipProvider 实例强制转换为自定义成员资格提供程序类型,然后直接调用 CreateUser 重载。 如果您的应用程序使用 CreateUserWizard 控件向成员资格数据源中添加新用户,则可以自定义 CreateUserWizard 控件的向导步骤,以包括检索自定义成员资格用户的其他属性值的控件。 然后可以处理 CreateUserWizard 控件的 CreatedUser 事件并添加执行下列操作的事件代码: 检索其他成员资格用户的属性值。 将 CreateUserWizard 控件创建的成员资格用户强制转换为自定义成员资格用户类型。 设置成员资格用户的其他属性。 将更新的用户传递给 Membership 类的 UpdateUser 方法。 这将调用自定义提供程序的 UpdateUser 方法(该方法在本主题前面的修改 UpdateUser 方法部分中进行了介绍),以便向数据源中添加其他属性值。 有关修改 CreateUserWizard 步骤的示例,请参见如何:自定义 ASP.NET CreateUserWizard 控件。 下面的代码示例演示如何:演示成员资格提供程序实现中示例成员资格提供程序的修改后的 CreateUser 方法,该方法已进行了更新,以便返回本主题前面创建自定义成员资格用户部分中的自定义成员资格用户类型。 已创建了重载,以便采用自定义成员资格提供程序的其他属性的值作为输入。
using System;
using System.Web.Security;
namespace Samples.AspNet.Membership.CS
{
public class OdbcMembershipUser : MembershipUser
{
private bool _IsSubscriber;
private string _CustomerID;
public bool IsSubscriber
{
get { return _IsSubscriber; }
set { _IsSubscriber = value; }
}
public string CustomerID
{
get { return _CustomerID; }
set { _CustomerID = value; }
}
public OdbcMembershipUser(string providername,
string username,
object providerUserKey,
string email,
string passwordQuestion,
string comment,
bool isApproved,
bool isLockedOut,
DateTime creationDate,
DateTime lastLoginDate,
DateTime lastActivityDate,
DateTime lastPasswordChangedDate,
DateTime lastLockedOutDate,
bool isSubscriber,
string customerID) :
base(providername,
username,
providerUserKey,
email,
passwordQuestion,
comment,
isApproved,
isLockedOut,
creationDate,
lastLoginDate,
lastActivityDate,
lastPasswordChangedDate,
lastLockedOutDate)
{
this.IsSubscriber = isSubscriber;
this.CustomerID = customerID;
}
}
}
CREATE TABLE Users
(
PKID Guid NOT NULL PRIMARY KEY,
Username Text (255) NOT NULL,
ApplicationName Text (255) NOT NULL,
Email Text (128) NOT NULL,
Comment Text (255),
Password Text (128) NOT NULL,
PasswordQuestion Text (255),
PasswordAnswer Text (255),
IsApproved YesNo,
LastActivityDate DateTime,
LastLoginDate DateTime,
LastPasswordChangedDate DateTime,
CreationDate DateTime,
IsOnLine YesNo,
IsLockedOut YesNo,
LastLockedOutDate DateTime,
FailedPasswordAttemptCount Integer,
FailedPasswordAttemptWindowStart DateTime,
FailedPasswordAnswerAttemptCount Integer,
FailedPasswordAnswerAttemptWindowStart DateTime,
IsSubscriber YesNo,
CustomerID Text (64)
)
修改 GetUser 方法
//
// MembershipProvider.GetUser(string, bool)
//
public override MembershipUser GetUser(string username, bool userIsOnline)
{
OdbcConnection conn = new OdbcConnection(connectionString);
OdbcCommand cmd = new OdbcCommand("SELECT PKID, Username, Email, PasswordQuestion," +
" Comment, IsApproved, IsLockedOut, CreationDate, LastLoginDate," +
" LastActivityDate, LastPasswordChangedDate, LastLockedOutDate," +
" IsSubscriber, CustomerID" +
" FROM Users WHERE Username = ? AND ApplicationName = ?", conn);
cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username;
cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = pApplicationName;
OdbcMembershipUser u = null;
OdbcDataReader reader = null;
try
{
conn.Open();
reader = cmd.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
u = GetUserFromReader(reader);
if (userIsOnline)
{
OdbcCommand updateCmd = new OdbcCommand("UPDATE Users " +
"SET LastActivityDate = ? " +
"WHERE Username = ? AND Applicationname = ?", conn);
updateCmd.Parameters.Add("@LastActivityDate", OdbcType.DateTime).Value = DateTime.Now;
updateCmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username;
updateCmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = pApplicationName;
updateCmd.ExecuteNonQuery();
}
}
}
catch (OdbcException e)
{
if (WriteExceptionsToEventLog)
{
WriteToEventLog(e, "GetUser(String, Boolean)");
throw new ProviderException(exceptionMessage);
}
else
{
throw e;
}
}
finally
{
if (reader != null) { reader.Close(); }
conn.Close();
}
return u;
}
//
// MembershipProvider.GetUser(object, bool)
//
public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
{
OdbcConnection conn = new OdbcConnection(connectionString);
OdbcCommand cmd = new OdbcCommand("SELECT PKID, Username, Email, PasswordQuestion," +
" Comment, IsApproved, IsLockedOut, CreationDate, LastLoginDate," +
" LastActivityDate, LastPasswordChangedDate, LastLockedOutDate," +
" IsSubscriber" +
" FROM Users WHERE PKID = ?", conn);
cmd.Parameters.Add("@PKID", OdbcType.UniqueIdentifier).Value = providerUserKey;
OdbcMembershipUser u = null;
OdbcDataReader reader = null;
try
{
conn.Open();
reader = cmd.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
u = GetUserFromReader(reader);
if (userIsOnline)
{
OdbcCommand updateCmd = new OdbcCommand("UPDATE Users " +
"SET LastActivityDate = ? " +
"WHERE PKID = ?", conn);
updateCmd.Parameters.Add("@LastActivityDate", OdbcType.DateTime).Value = DateTime.Now;
updateCmd.Parameters.Add("@PKID", OdbcType.UniqueIdentifier).Value = providerUserKey;
updateCmd.ExecuteNonQuery();
}
}
}
catch (OdbcException e)
{
if (WriteExceptionsToEventLog)
{
WriteToEventLog(e, "GetUser(Object, Boolean)");
throw new ProviderException(exceptionMessage);
}
else
{
throw e;
}
}
finally
{
if (reader != null) { reader.Close(); }
conn.Close();
}
return u;
}
//
// GetUserFromReader
// A helper function that takes the current row from the OdbcDataReader
// and hydrates a MembershipUser from the values. Called by the
// MembershipUser.GetUser implementation.
//
private OdbcMembershipUser GetUserFromReader(OdbcDataReader reader)
{
object providerUserKey = reader.GetValue(0);
string username = reader.GetString(1);
string email = reader.GetString(2);
string passwordQuestion = "";
if (reader.GetValue(3) != DBNull.Value)
passwordQuestion = reader.GetString(3);
string comment = "";
if (reader.GetValue(4) != DBNull.Value)
comment = reader.GetString(4);
bool isApproved = reader.GetBoolean(5);
bool isLockedOut = reader.GetBoolean(6);
DateTime creationDate = reader.GetDateTime(7);
DateTime lastLoginDate = new DateTime();
if (reader.GetValue(8) != DBNull.Value)
lastLoginDate = reader.GetDateTime(8);
DateTime lastActivityDate = reader.GetDateTime(9);
DateTime lastPasswordChangedDate = reader.GetDateTime(10);
DateTime lastLockedOutDate = new DateTime();
if (reader.GetValue(11) != DBNull.Value)
lastLockedOutDate = reader.GetDateTime(11);
bool isSubscriber = false;
if (reader.GetValue(12) != DBNull.Value)
isSubscriber = reader.GetBoolean(12);
string customerID = String.Empty;
if (reader.GetValue(13) != DBNull.Value)
customerID = reader.GetString(13);
OdbcMembershipUser u = new OdbcMembershipUser(this.Name,
username,
providerUserKey,
email,
passwordQuestion,
comment,
isApproved,
isLockedOut,
creationDate,
lastLoginDate,
lastActivityDate,
lastPasswordChangedDate,
lastLockedOutDate,
isSubscriber,
customerID);
return u;
}
修改 UpdateUser 方法
public override void UpdateUser(MembershipUser user)
{
OdbcConnection conn = new OdbcConnection(connectionString);
OdbcCommand cmd = new OdbcCommand("UPDATE Users " +
" SET Email = ?, Comment = ?," +
" IsApproved = ?, IsSubscriber = ?, CustomerID = ?" +
" WHERE Username = ? AND ApplicationName = ?", conn);
OdbcMembershipUser u = (OdbcMembershipUser)user;
cmd.Parameters.Add("@Email", OdbcType.VarChar, 128).Value = user.Email;
cmd.Parameters.Add("@Comment", OdbcType.VarChar, 255).Value = user.Comment;
cmd.Parameters.Add("@IsApproved", OdbcType.Bit).Value = user.IsApproved;
cmd.Parameters.Add("@IsSubscriber", OdbcType.Bit).Value = u.IsSubscriber;
cmd.Parameters.Add("@CustomerID", OdbcType.VarChar, 128).Value = u.CustomerID;
cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = user.UserName;
cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = pApplicationName;
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (OdbcException e)
{
if (WriteExceptionsToEventLog)
{
WriteToEventLog(e, "UpdateUser");
throw new ProviderException(exceptionMessage);
}
else
{
throw e;
}
}
finally
{
conn.Close();
}
}
修改 CreateUser 方法
说明
public override MembershipUser CreateUser(string username,
string password,
string email,
string passwordQuestion,
string passwordAnswer,
bool isApproved,
object providerUserKey,
out MembershipCreateStatus status)
{
return this.CreateUser(username, password, email,
passwordQuestion, passwordAnswer,
isApproved, providerUserKey, false, "",
out status);
}
//
// OdbcMembershipProvider.CreateUser -- returns OdbcMembershipUser
//
public OdbcMembershipUser CreateUser(
string username,
string password,
string email,
string passwordQuestion,
string passwordAnswer,
bool isApproved,
object providerUserKey,
bool isSubscriber,
string customerID,
out MembershipCreateStatus status)
{
ValidatePasswordEventArgs args =
new ValidatePasswordEventArgs(username, password, true);
OnValidatingPassword(args);
if (args.Cancel)
{
status = MembershipCreateStatus.InvalidPassword;
return null;
}
if (RequiresUniqueEmail && GetUserNameByEmail(email) != "")
{
status = MembershipCreateStatus.DuplicateEmail;
return null;
}
MembershipUser u = GetUser(username, false);
if (u == null)
{
DateTime createDate = DateTime.Now;
if (providerUserKey == null)
{
providerUserKey = Guid.NewGuid();
}
else
{
if ( !(providerUserKey is Guid) )
{
status = MembershipCreateStatus.InvalidProviderUserKey;
return null;
}
}
OdbcConnection conn = new OdbcConnection(connectionString);
OdbcCommand cmd = new OdbcCommand("INSERT INTO Users " +
" (PKID, Username, Password, Email, PasswordQuestion, " +
" PasswordAnswer, IsApproved," +
" Comment, CreationDate, LastPasswordChangedDate, LastActivityDate," +
" ApplicationName, IsLockedOut, LastLockedOutDate," +
" FailedPasswordAttemptCount, FailedPasswordAttemptWindowStart, " +
" FailedPasswordAnswerAttemptCount, FailedPasswordAnswerAttemptWindowStart, " +
" IsSubscriber, CustomerID)" +
" Values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", conn);
cmd.Parameters.Add("@PKID", OdbcType.UniqueIdentifier).Value = providerUserKey;
cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username;
cmd.Parameters.Add("@Password", OdbcType.VarChar, 255).Value = EncodePassword(password);
cmd.Parameters.Add("@Email", OdbcType.VarChar, 128).Value = email;
cmd.Parameters.Add("@PasswordQuestion", OdbcType.VarChar, 255).Value = passwordQuestion;
cmd.Parameters.Add("@PasswordAnswer", OdbcType.VarChar, 255).Value = EncodePassword(passwordAnswer);
cmd.Parameters.Add("@IsApproved", OdbcType.Bit).Value = isApproved;
cmd.Parameters.Add("@Comment", OdbcType.VarChar, 255).Value = "";
cmd.Parameters.Add("@CreationDate", OdbcType.DateTime).Value = createDate;
cmd.Parameters.Add("@LastPasswordChangedDate", OdbcType.DateTime).Value = createDate;
cmd.Parameters.Add("@LastActivityDate", OdbcType.DateTime).Value = createDate;
cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = pApplicationName;
cmd.Parameters.Add("@IsLockedOut", OdbcType.Bit).Value = false;
cmd.Parameters.Add("@LastLockedOutDate", OdbcType.DateTime).Value = createDate;
cmd.Parameters.Add("@FailedPasswordAttemptCount", OdbcType.Int).Value = 0;
cmd.Parameters.Add("@FailedPasswordAttemptWindowStart", OdbcType.DateTime).Value = createDate;
cmd.Parameters.Add("@FailedPasswordAnswerAttemptCount", OdbcType.Int).Value = 0;
cmd.Parameters.Add("@FailedPasswordAnswerAttemptWindowStart", OdbcType.DateTime).Value = createDate;
cmd.Parameters.Add("@IsSubscriber", OdbcType.Bit).Value = isSubscriber;
cmd.Parameters.Add("@CustomerID", OdbcType.VarChar, 128).Value = customerID;
try
{
conn.Open();
int recAdded = cmd.ExecuteNonQuery();
if (recAdded > 0)
{
status = MembershipCreateStatus.Success;
}
else
{
status = MembershipCreateStatus.UserRejected;
}
}
catch (OdbcException e)
{
if (WriteExceptionsToEventLog)
{
WriteToEventLog(e, "CreateUser");
}
status = MembershipCreateStatus.ProviderError;
}
finally
{
conn.Close();
}
return (OdbcMembershipUser)GetUser(username, false);
}
else
{
status = MembershipCreateStatus.DuplicateUserName;
}
return null;
}
发表评论
-
ASP.NET Webform中判断当前AJAX请求是否是微软AJAX框架
2015-08-12 16:35 768/// <summary> / ... -
为使用微软AJAX框架的所有页面添加正在加载的遮罩层效果
2015-08-12 16:13 530如果多个页面使用了微软的AJAX框架,为了统一为所有Upd ... -
asp.net mvc与jquery easyui的扩展
2015-04-28 06:35 863asp.net mvc与easyui 验证插件的扩展: h ... -
构建高性能ASP.NET站点
2015-03-08 23:06 677http://www.cnblogs.com/yanyangt ... -
bootstrap在iis中发布后无法看到图标
2014-12-23 09:58 698使用了最新的bootstrap框架,结果在IIS6上无法显示 ... -
js动画框架
2014-12-15 10:54 525比较好用的JS动画库有:velocity和GSAP ... -
程序员福利各大平台免费接口,非常适用
2014-12-03 10:03 913电商接口 京东获取单个商品价格接口: http: ... -
asp.net mvc从路由中获取区域area的名称
2014-11-07 16:44 1088/// <summary> ... -
谈谈IE针对Ajax请求结果的缓存
2013-12-27 19:21 410在默认情况下,IE会针对请求地址缓存Ajax请求的结果。换句 ... -
一网打尽中文编码转换——6种编码30个方向的转换
2013-10-15 13:45 577一网打尽中文编码转换——6种编码30个方向的转换 转 ... -
使用CSS sprites减少HTTP请求
2013-10-10 13:08 827转载自博客园:http://www.cnblogs.com/d ... -
Mvc下异步断点续传大文件
2013-10-10 13:06 855转自博客园:http://www.cnblogs.com/AS ... -
工商银行在线支付接口
2013-09-26 14:57 830本文转载自博客园:http://www.cnblogs.com ... -
asp.net mvc项目发布环境搭建
2013-08-27 23:03 1058asp.net webpages 2.0下载地址: ht ... -
一键发布ASP.NET Web安装程序
2013-08-27 08:38 932转载自博客园 原文地址:http://www.cnblog ... -
ASP.NET文件下载汇总
2013-08-06 08:43 916利用TransmitFile方法,解决Response.Bi ... -
asp.net mvc如何实现换肤
2012-09-29 16:41 946方案1:http://www.cnblogs.com/QLee ... -
office产品如何在网页中显示
2012-07-01 08:46 812PPT转换为flash,flash显示在网站中http://w ... -
Vcastr 3.0 开源的在线FLV播放器
2012-05-05 17:28 4323----------------------------- ... -
ASP.NET中判断请求是否为Ajax请求一法
2012-03-20 09:57 3335判断是否为ajaxRequest 在http请求头中查找是否包 ...
相关推荐
4. **实现`MembershipProvider`接口**:为了创建自定义成员资格提供程序,你需要创建一个类并实现`System.Web.Security.MembershipProvider`接口。这个接口定义了一系列方法,如`CreateUser`、`ValidateUser`、`...
4. **自定义成员资格与角色管理** - ASP.NET的成员资格和角色框架是可扩展的,允许开发者根据项目需求定制身份验证和授权流程。例如,可以创建自定义的成员资格提供程序,以对接不同的用户存储系统(如数据库、LDAP...
它提供了一组预定义的接口和类,如`MembershipProvider`和`MembershipUser`,使得开发者可以通过自定义或使用内置的SQL Server成员资格提供者(如SqlMembershipProvider)来管理用户账户。例如,你可以用`CreateUser...
开发者可以使用预定义的接口和类,如`Membership`、`MembershipUser`、`MembershipProvider`等,来实现自定义的用户验证和管理逻辑。成员资格框架支持多种身份验证模式,如Forms Authentication,它允许用户通过...
可通过编程方式实现自定义登录验证逻辑。 2. LoginName控件:在用户登录后显示用户名,FormatString属性可以定制显示格式,如添加欢迎语。 3. LoginView控件:根据用户是否登录或角色权限显示不同的内容,实现了动态...
下面将详细解释SharePoint 2010中如何实现自定义表单登录: 1. **配置FBA**: - 首先,你需要安装和配置一个支持FBA的成员资格提供程序,例如ASP.NET SQL Membership Provider。 - 在SQL Server中创建一个新的...
例如,可以创建自定义身份验证提供者、成员资格提供者或角色提供者。MemberShipDemo可能包含了这些自定义组件的实现。 通过学习和理解这个MemberShipDemo源代码,开发者能够掌握如何在.NET 2.0环境中有效地管理和...
使用Google Workspace用户帐户管理github组织成员资格 根据Google Workspace个人资料中的自定义属性管理GitHub组织中的人员,从而实现无缝的JML(Joiner mover离开者)流程,如果允许,则在Google Workspace中删除/...
在.NET中,通常使用ASP.NET的成员资格(Membership)和角色(Role)提供者来处理用户认证和授权。然而,Membership框架虽然功能强大,但配置和使用相对复杂,可能不适合所有场景,尤其是对于小型项目或者需要高度...
通过Login控件和相关的成员资格提供程序,可以实现对用户登录状态的管理,以及根据不同用户角色显示不同内容的LoginView控件等。 知识点七:***表单身份验证 ***提供了表单身份验证机制,可以与成员资格系统结合...
在验证用户时,我们通常会使用`System.Web.Security.Membership`类,它可以与ASP.NET的成员资格提供程序配合工作,如SqlMembershipProvider或ActiveDirectoryMembershipProvider。对于域验证,我们会选择后者,因为...
ASP.NET的成员资格系统允许用户注册并验证身份,同时提供了管理用户账户和权限的工具。角色管理则让开发者可以将用户分组到不同的角色,从而根据角色分配不同的访问权限和个性化设置。例如,管理员可能看到更多管理...
易语言是一种基于中文编程的程序设计语言,旨在降低编程难度,让不懂英文的用户也能进行软件开发。在易语言中,内存自定义数据类型是一种重要的编程概念,它允许程序员根据需求定义自己的数据结构,以便更有效地管理...
综上所述,ASP.NET RBAC通用权限管理通过成员资格和角色框架,实现了用户、角色和权限的有效管理。通过RMF1.0 Beta 20061003这样的工具,开发者可以快速构建具备安全控制的Web应用,同时确保系统的可扩展性和可维护...
为了实现这样的权限控制系统,开发者可能会使用ASP.NET的内置角色和成员资格框架,配合自定义的业务逻辑和数据库操作。第三方控件可能提供了更友好的界面和更丰富的功能,如用户和角色的批量操作,权限的图形化配置...
1. **成员资格提供程序**:ASP.NET 2.0引入了一种灵活的方式来管理用户账户,即成员资格提供程序(Membership Provider)。这个系统允许开发者选择不同的存储机制,如SQL Server、Access或Active Directory,来存储...
在开发层面,Visual Studio 2008(VS2008)提供了ASP.NET框架,其中的成员资格(Membership)、角色(Roles)和授权(Authorization)功能为权限管理提供了强大的支持。我们可以利用` Membership`类进行用户注册、...
7. **数据库存储**:用户和角色信息通常存储在数据库中,如ASP.NET的成员资格提供程序或ASP.NET Core Identity。这些框架提供了对用户数据的CRUD操作,并且可以与角色系统集成,以实现动态权限管理。 8. **安全配置...
默认的SQLServer成员资格提供程序存储用户数据在数据库中,但也可以根据需求配置其他类型的提供程序,如Active Directory或自定义实现。 在ASP.NET中,登录控件(Login)包括以下关键元素: 1. **用户名/密码...