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(全部学于这大佬)