asp.net 自带的身份验证,form身份验证。
forms身份验证:身份登录,权限验证,传值。
1.登录:
验证登录是否正确,用FormsAuthentication.setAuthcookie(已验证的用户名称,是否持久)来创建一个验证的票据,用于加密存储用户登录名<Encrypt()函数加密>,存在context.user 中,并更具加密创建一个cookie.
singout()用于注销。
2.授权:
UrlAuthorizationModule用于权限管理,可以再config里面设置。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow users="*"/> //此处若有allow 必须在deny 前面!
</authorization>
</system.web>
</configuration>
3.传值:
http 协议是无状态的,无法验证访问的发起人,单项目往往需要验证是否为同一用户,但vs自带的context.user 只会存用户名,无法存储其他的信息,这时我就可以重新实现接口IPrincipal ,定义自己的context.user 来传更多的信息。
public class MyFormsPrincipal<TUserData> : IPrincipal where TUserData : class, new()
{
private IIdentity _identity;
private TUserData _userData;
public MyFormsPrincipal(FormsAuthenticationTicket ticket, TUserData userData)
{
if( ticket == null )
throw new ArgumentNullException("ticket");
if( userData == null )
throw new ArgumentNullException("userData");
_identity = new FormsIdentity(ticket);
_userData = userData;
}
public TUserData UserData
{
get { return _userData; }
}
public IIdentity Identity
{
get { return _identity; }
}
public bool IsInRole(string role)
{
// 把判断用户组的操作留给UserData去实现。
IPrincipal principal = _userData as IPrincipal;
if( principal == null )
throw new NotImplementedException();
else
return principal.IsInRole(role);
}
大神—超级链接:https://www.cnblogs.com/fish-li/archive/2012/04/15/2450571.html(全部学于这大佬)